我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包。
我想创建一个自定义步骤,询问用户是否需要“按用户”或“按机器”安装,以便允许非特权用户和管理员安装软件。
Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?
看一下这个截图
答案 0 :(得分:6)
Inno Setup 6内置了对non-administrative install mode的支持。
基本上,您只需设置PrivilegesRequiredOverridesAllowed
:
[Setup]
PrivilegesRequiredOverridesAllowed=dialog
在先前版本的Inno Setup中没有这样简单的解决方案。
最简单的方法是将PrivilegesRequired
directive设置为none
(未记录的值):
[Setup]
PrivilegesRequired=none
这将允许安装程序由非特权用户运行。它只会为他/她安装。
对于特权用户,Windows通常会检测到该可执行文件是一个安装程序,它会弹出一个UAC提示符。它将在之后为所有用户安装。
有关详细信息,请参阅Make Inno Setup installer request privileges elevation only when needed
要使安装程序安装到“应用程序数据”,当由非特权用户运行时,您可以执行以下操作:
[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;
如果您真的希望用户选择,安装到哪里(虽然我认为没有必要让管理员为他/她自己安装),您可以这样做而不是上面的{{1} }:
DefaultDirName