gpt4 book ai didi

inno-setup - Inno Setup 从文件 (.inf) 加载自定义安装设置的默认值以进行静默安装

转载 作者:行者123 更新时间:2023-12-03 23:22:06 26 4
gpt4 key购买 nike

我有一个安装脚本,允许用户指定他们想要安装我的应用程序的位置。它以 [Code] 中的 Pascal 脚本的形式出现。堵塞。

var
SelectUsersPage: TInputOptionWizardPage;
IsUpgrade : Boolean;
UpgradePage: TOutputMsgWizardPage;

procedure InitializeWizard();
var
AlreadyInstalledPath: String;
begin
{ Determine if it is an upgrade... }
{ Read from registry to know if this is a fresh install or an upgrade }
if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppId}_is1', 'Inno Setup: App Path', AlreadyInstalledPath) then
begin
{ So, this is an upgrade set target directory as installed before }
WizardForm.DirEdit.Text := AlreadyInstalledPath;
{ and skip SelectUsersPage }
IsUpgrade := True;

{ Create a page to be viewed instead of Ready To Install }
UpgradePage := CreateOutputMsgPage(wpReady,
'Ready To Upgrade', 'Setup is now ready to upgrade {#MyAppName} on your computer.',
'Click Upgrade to continue, or click Back if you want to review or change any settings.');
end
else
begin
IsUpgrade:= False;
end;

{ Create a page to select between "Just Me" or "All Users" }
SelectUsersPage := CreateInputOptionPage(wpLicense,
'Select Users', 'For which users do you want to install the application?',
'Select whether you want to install the library for yourself or for all users of this computer. Click next to continue.',
True, False);

{ Add items }
SelectUsersPage.Add('All users');
SelectUsersPage.Add('Just me');

{ Set initial values (optional) }
SelectUsersPage.Values[0] := False;
SelectUsersPage.Values[1] := True;
end;

所以问题是我如何支持静默安装?当用户调用 /SILENT/VERYSILENT安装程序默认为 SelectUsersPage.Values[1] , 用于 Just Me .我想通过提供答案文件来帮助支持想要更改安装目录的用户。

我没有开发所有这些代码,我是 Pascal 的新手。

谢谢。

最佳答案

您可以向 Users 添加自定义 key (比如 .inf ) /SAVEINF 创建的文件.

然后在安装程序中,查找 /LOADINF command-line argument并阅读 key 并采取相应措施:

procedure InitializeWizard();
var
InfFile: string;
I: Integer;
UsersDefault: Integer;
begin
...

InfFile := ExpandConstant('{param:LOADINF}');

UsersDefault := 0;

if InfFile <> '' then
begin
Log(Format('Reading INF file %s', [InfFile]));
UsersDefault :=
GetIniInt('Setup', 'Users', UsersDefault, 0, 0, ExpandFileName(InfFile));
Log(Format('Read default "Users" selection %d', [UsersDefault]));
end
else
begin
Log('No INF file');
end;

SelectUsersPage.Values[UsersDefault] := True;
end;

关于inno-setup - Inno Setup 从文件 (.inf) 加载自定义安装设置的默认值以进行静默安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624032/

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