Die*_*elo 13 windows installer inno-setup
我需要安装程序检查目标位置是否存在文件,如果不存在,则安装将中止.我的项目是一个更新补丁,所以如果应用程序的主exe不在目标中,我希望安装程序避免安装更新文件.我怎样才能做到这一点?
有人可以通过Windows注册表提供代码示例来检查文件版本吗?
[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;
Run Code Online (Sandbox Code Playgroud)
Mir*_*ral 15
只是不要让用户继续,直到他们选择正确的文件夹.
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;
Run Code Online (Sandbox Code Playgroud)
当然,尝试为它们自动选择正确的文件夹也是一个好主意,例如.通过从注册表中检索正确的位置.
另一个解决方案是InitializeSetup():
[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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29342 次 |
| 最近记录: |