我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包.
我想创建一个自定义步骤,询问用户是否需要"按用户"或"每台机器"安装,以便允许非特权用户和管理员安装软件.
Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?
看一下这个截图
在Inno Setup中没有简单的解决方案.
最简单的方法是将PrivilegesRequiredOverridesAllowed
指令设置为PrivilegesRequired
(未记录的值):
[Setup]
PrivilegesRequiredOverridesAllowed=commandline dialog
这将允许安装程序由非特权用户运行.它只会为他/她安装.
对于特权用户,Windows通常会检测到该可执行文件是安装程序,它将弹出UAC提示符.之后将为所有用户安装.
有关详细信息,请参阅仅在需要时使Inno Setup安装程序请求权限提升
要使安装程序安装到"应用程序数据",当由非特权用户运行时,您可以执行以下操作:
[Setup]
PrivilegesRequired=none
如果你真的想让用户选择,安装到哪里(虽然我认为不需要管理员为他/她自己安装),你可以这样做而不是上面的none
:
[Setup]
DefaultDirName={code:GetDefaultDirName}
[Code]
function GetDefaultDirName(Param: string): string;
begin
if IsAdminLoggedOn then
begin
Result := ExpandConstant('{pf}\My Program');
end
else
begin
Result := ExpandConstant('{userappdata}\My Program');
end;
end;