这可能是一个简单的修复,但我似乎无法绕过它。我有一个要安装的应用程序,需要用户选择3个可能的INI文件中的一个来安装。我可以轻松地进行3种不同的设置,每种设置使用不同的INI,但我想简化问题,并在安装时让用户选择INI。 INI文件具有相同的名称,因此在打包时,必须为它们指定不同的名称。一旦用户选择要安装哪个INI,它将被提取到app目录中并重命名。有没有办法做到这一点?
感谢您的帮助!
答案 0 :(得分:1)
您可以将所有三个INI文件的条目添加到 [Files] 部分,为它们指定相同的目标名称,并使用Check
参数在运行时决定哪一个获取安装。我的一个安装脚本的代码片段:
[Files]
Source: "{src}\Line1.ini"; DestDir: "{app}"; DestName: "Line.ini"; \
Flags: external; Check: IsLine1
Source: "{src}\Line2.ini"; DestDir: "{app}"; DestName: "Line.ini"; \
Flags: external; Check: IsLine2
Source: "{src}\Line3.ini"; DestDir: "{app}"; DestName: "Line.ini"; \
Flags: external; Check: IsLine3
支持功能在 [代码] 部分:
function IsLine(ID: integer): boolean;
begin
Result := (ID = 1 + LinePage.SelectedValueIndex);
end;
function IsLine1(): boolean;
begin
Result := IsLine(1);
end;
function IsLine2(): boolean;
begin
Result := IsLine(2);
end;
function IsLine3(): boolean;
begin
Result := IsLine(3);
end;
其中LinePage
是TInputOptionWizardPage
类型的自定义页面。用户选择要安装程序的生产线的无线电组,并且仅复制匹配的INI文件。请注意,在我的情况下它们是external
,但它们也可以编译到设置中。
答案 1 :(得分:0)
一种可能的方法是创建一个[Run]部分(或添加到它)并执行(AfterInstall:参数)一个Pascal例程,删除额外的ini文件并重命名剩余的文件。