INNO设置:在安装程序包中定义配置文件

时间:2010-02-01 16:56:04

标签: inno-setup

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

感谢您的帮助!

2 个答案:

答案 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;

其中LinePageTInputOptionWizardPage类型的自定义页面。用户选择要安装程序的生产线的无线电组,并且仅复制匹配的INI文件。请注意,在我的情况下它们是external,但它们也可以编译到设置中。

答案 1 :(得分:0)

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