gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:45:58 25 4
gpt4 key购买 nike

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

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

这可能与 Inno Setup 吗?如果是的话,你能提供一个跟踪吗?

看看这个截图

enter image description here

最佳答案

创新设置 6

Inno Setup 6 内置支持 non-administrative install mode .

基本上,您可以简单地设置 PrivilegesRequiredOverridesAllowed :

[Setup]
PrivilegesRequiredOverridesAllowed=commandline dialog

enter image description here

创新设置 5

在以前版本的 Inno Setup 中,没有这么简单的解决方案。

您可以做的最简单的事情是设置 PrivilegesRequired directivenone (未记录的值(value)):

[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;

如果你真的想让用户选择,安装到哪里(虽然我认为没有必要让管理员为他/她自己安装),你可以这样做而不是上面的 DefaultDirName :

[Code]

var
OptionPage: TInputOptionWizardPage;

procedure InitializeWizard();
begin
OptionPage :=
CreateInputOptionPage(
wpWelcome,
'Choose installation options', 'Who should this application be installed for?',
'Please select whether you wish to make this software available for all users ' +
'or just yourself.',
True, False);

OptionPage.Add('&Anyone who uses this computer');
OptionPage.Add('&Only for me');

if IsAdminLoggedOn then
begin
OptionPage.Values[0] := True;
end
else
begin
OptionPage.Values[1] := True;
OptionPage.CheckListBox.ItemEnabled[0] := False;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = OptionPage.ID then
begin
if OptionPage.Values[1] then
begin
{ override the default installation to program files ({pf}) }
WizardForm.DirEdit.Text := ExpandConstant('{userappdata}\My Program')
end
else
begin
WizardForm.DirEdit.Text := ExpandConstant('{pf}\My Program');
end;
end;
Result := True;
end;

Installation options

关于javafx - 每个用户或每台机器安装的 Inno Setup 自定义对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com