只按照你给的代码精简了下,没动什么,如果不行,可以这样:
//检测并提示卸载一个软件的 32 位和 64 位
Function InitializeSetup():boolean;
var
ResultCode: Integer;
MykeynotExist:boolean;
uicmd:String;
begin
Result:= False;
MykeynotExist:=True;
if RegQueryStringValue(HKLM32, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F504E4EC-7CF0-4017-AA29-088DF487DA97}_is1', 'UninstallString', uicmd) then
begin
MykeynotExist:= False;
if MsgBox('您已经安装了NX8.5的某个32位版本,您必须先卸载然后再尝试安装。'#13 #10'按“确定”继续,否则按“取消”退出安装。',mbInformation,MB_OKCANCEL)=IDOK then
begin
Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
MykeynotExist:= True;
end;
end;
if IsWin64 then
begin
if RegQueryStringValue(HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F504E4EC-7CF0-4017-AA29-088DF487DA97}_is1', 'UninstallString', uicmd) then
begin
MykeynotExist:= False;
if MsgBox('您已经安装了NX8.5的某个64位版本,您必须先卸载然后再尝试安装。'#13 #10'按“确定”继续,否则按“取消”退出安装。',mbInformation,MB_OKCANCEL)= IDOK then
begin
Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
MykeynotExist:= True;
end;
end;
end;
Result:=MykeynotExist;
end;