每个用户或每台机器安装的Inno Setup自定义对话框

时间:2015-12-17 09:11:51

标签: javafx inno-setup pascalscript

我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包。

我想创建一个自定义步骤,询问用户是否需要“按用户”或“按机器”安装,以便允许非特权用户和管理员安装软件。

Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?

看一下这个截图

enter image description here

1 个答案:

答案 0 :(得分:6)

Inno Setup 6内置了对non-administrative install mode的支持。

基本上,您只需设置PrivilegesRequiredOverridesAllowed

即可
[Setup]
PrivilegesRequiredOverridesAllowed=dialog

enter image description here

在先前版本的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

Installation options