Inno Setup – 检查目标文件是否存在,否则如果不中止安装

我需要我的安装程序来检查目标位置是否存在文件,如果不存在,则安装将中止。 我的项目是一个更新补丁,所以我希望安装程序避免安装更新文件,如果应用程序的主exe文件不在目的地。 我怎样才能做到这一点?

有人可以举一个代码来检查通过Windowsregistry文件版本的例子吗?

[Files] Source C:\filename.exe; DestDir {app}; Flags: ignoreversion; BeforeInstall: CheckForFile; [code] procedure CheckForFile(): Boolean; begin if (FileExists('c:\somefile.exe')) then begin MsgBox('File exists, install continues', mbInformation, MB_OK); Result := True; end else begin MsgBox('File does not exist, install stops', mbCriticalError, MB_OK); Result := False; end; end; 

只是不要让用户继续,直到他们选择正确的文件夹。

 function NextButtonClick(PageId: Integer): Boolean; begin Result := True; if (PageId = wpSelectDir) and not FileExists(ExpandConstant('{app}\yourapp.exe')) then begin MsgBox('YourApp does not seem to be installed in that folder. Please select the correct folder.', mbError, MB_OK); Result := False; exit; end; end; 

当然,尝试自动为他们选择正确的文件夹也是一个好主意,例如。 通过从注册表中检索正确的位置。

另一个解决方案是InitializeSetup()

信用: Manfred

 [code] function InitializeSetup(): Boolean; begin if (FileExists(ExpandConstant('{pf}\{#MyAppName}\somefile.exe'))) then begin MsgBox('Installation validated', mbInformation, MB_OK); Result := True; end else begin MsgBox('Abort installation', mbCriticalError, MB_OK); Result := False; end; end;