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

dre*_*nda 4 javafx inno-setup pascalscript

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

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

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

看一下这个截图

在此输入图像描述

Mar*_*ryl 7

在Inno Setup中没有简单的解决方案.

最简单的方法是将PrivilegesRequiredOverridesAllowed指令设置为PrivilegesRequired(未记录的值):

[Setup]
PrivilegesRequiredOverridesAllowed=commandline dialog
Run Code Online (Sandbox Code Playgroud)

这将允许安装程序由非特权用户运行.它只会为他/她安装.

对于特权用户,Windows通常会检测到该可执行文件是安装程序,它将弹出UAC提示符.之后将为所有用户安装.

有关详细信息,请参阅仅在需要时使Inno Setup安装程序请求权限提升


要使安装程序安装到"应用程序数据",当由非特权用户运行时,您可以执行以下操作:

[Setup]
PrivilegesRequired=none
Run Code Online (Sandbox Code Playgroud)

如果你真的想让用户选择,安装到哪里(虽然我认为不需要管理员为他/她自己安装),你可以这样做而不是上面的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;
Run Code Online (Sandbox Code Playgroud)

安装选项