Ram*_*ish 2 installer pascal inno-setup
我正在使用Inno Setup创建一个安装程序.我必须从用户那里采取两条路径.一个用于程序可执行文件,另一个用于库.默认的app文件夹是{pf}/companyname/applicationname
在InitializeWizard
我创建了第二页,它从用户获取lib文件夹.
有没有办法将默认的lib文件夹更改为用户选择的文件夹{app}
?
我试过了WizardDirValue
.它只提供默认{app}
值,而不是用户在第一页中选择的路径.
[code]
procedure InitializeWizard();
begin
page2:= CreateInputDirPage(wpProgress,
'Select Library Location', 'Where Library files should be stored?',
'To continue, click Next. If you would like to select a different folder, click Browse.',
False, 'Libs');
page2.Add('');
page2.Values[0] := WizardDirValue+'\libs';
LibDir := page2.Values[0];
end
Run Code Online (Sandbox Code Playgroud)
正如名称InitializeWizard()
所示,它是一个初始化函数,在显示向导之前只调用一次.您可以通过在代码上设置断点来自行测试 - 它只会在开始时被命中一次.
因此,它是添加新向导页面并设置任何控件的默认值的正确位置,但是无法对其他向导页面的更改做出反应.您需要做的是在页面显示之前更新库路径.这样做的正确方法是NextButtonClick()
功能.以下是一些示例代码:
var
LibPage: TInputDirWizardPage;
procedure InitializeWizard();
begin
LibPage := CreateInputDirPage(wpSelectDir, 'Select Library Location',
'Where should the library files be stored?',
'To continue, click Next. If you would like to select a different folder, ' +
'click Browse.', False, 'Libs');
LibPage.Add('');
LibPage.Values[0] := WizardDirValue + '\libs';
end;
Run Code Online (Sandbox Code Playgroud)
这将在查询{app}
目录的页面之后添加您的页面.由于用户可以单击"上一步"按钮{app}
多次更改目录,因此在页面即将显示时应始终更新库路径:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpSelectDir then
LibPage.Values[0] := WizardDirValue + '\libs';
end;
Run Code Online (Sandbox Code Playgroud)
为了更好的可用性,您还可以检查库目录是否为默认值,否则不会更改其值.
归档时间: |
|
查看次数: |
8306 次 |
最近记录: |