1

这可能是一个简单的修复,但我似乎无法理解它。我有一个要安装的应用程序,需要用户从 3 个可能的 INI 文件中选择 1 个来配合安装。我可以轻松地进行 3 种不同的设置,每种都使用不同的 INI,但我想简化问题,并在安装时让用户选择 INI。INI 文件具有相同的名称,因此在打包时必须为它们指定不同的名称。一旦用户选择要安装的 INI,它将被提取到应用程序目录并重命名。有没有办法做到这一点?

谢谢你的帮助!

4

2 回答 2

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在我的情况下,它们也可以编译到设置中。

于 2010-02-05T11:37:50.793 回答
0

一种可能的方法是创建一个 [Run] 部分(或添加到它)并执行(AfterInstall: 参数)一个 Pascal 例程,该例程删除额外的 ini 文件并重命名剩余的文件。

于 2010-02-01T17:46:02.363 回答