Inno Setup从文件(.inf)加载自定义安装设置的默认值以进行静默安装 [英] Inno Setup Load defaults for custom installation settings from a file (.inf) for silent installation
问题描述
我有一个安装脚本,该脚本允许用户指定他们想要在哪里安装我的应用程序.它是[Code]
块中的Pascal脚本形式.
I have a setup script that allows the user to specify where they would like to install my application. It is in the form of a Pascal script within the [Code]
block.
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
的.我想通过提供答案文件来帮助支持想要更改安装目录的用户.
So the question is how could I support a silent installation? When a user invokes /SILENT
or /VERYSILENT
the installer defaults to SelectUsersPage.Values[1]
, which is for Just Me
. I want to help support the user that wants to change the installation directory with providing an answer file.
我没有开发所有这些代码,并且是Pascal的新手.
I didn't develop all of this code, and am a newbie with Pascal.
谢谢.
推荐答案
您可以将自定义键(例如Users
)添加到/SAVEINF
.
You can add a custom key (say Users
) to the .inf
file created by the /SAVEINF
.
然后在安装程序中,查找 /LOADINF
命令行论据并阅读密钥并采取相应行动:
Then in the installer, lookup the /LOADINF
command-line argument and read the key and act accordingly:
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从文件(.inf)加载自定义安装设置的默认值以进行静默安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!