如果需要特权提升,Inno Setup安装程序具有可用于控制安装程序启动时的PrivilegesRequired指令.我希望我的安装程序甚至可以为非管理员用户工作(没有问题将我的应用程序安装到用户文件夹,而不是Program Files).所以我设置PrivilegesRequired为none(未记录的值).这使得UAC仅为管理员用户提示弹出,因此他们甚至可以安装到Program Files.没有UAC提示非管理员用户,所以即使他们可以安装应用程序(到用户文件夹).
这有一些缺点:
是否有一些方法可以在需要时(当用户选择仅由管理员帐户写入的安装文件夹时)使Inno Setup请求权限提升?
我假设在Inno Setup中没有这个设置.但可能有一个程序化的解决方案(Inno Setup Pascal脚本)或某种插件/ DLL.
请注意,即将推出的Inno Setup 6具有对非管理安装模式的内置支持.
我需要安装程序检查目标位置是否存在文件,如果不存在,则安装将中止.我的项目是一个更新补丁,所以如果应用程序的主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)