2010-02-01 98 views
1

这可能是一个简单的修复,但我似乎无法将其包裹在它的周围。我有一个安装应用程序,需要用户选择3个可能的INI文件中的1个来配合安装。我可以轻松地做3种不同的设置,每种设置都使用不同的INI,但我想简化问题并在安装时给用户选择INI。 INI文件具有相同的名称,因此打包时必须给出不同的名称。一旦用户选择安装哪个INI,它将被解压到应用程序目录并重新命名。有没有办法做到这一点?INNO设置:在安装包中定义配置文件

感谢您的帮助!

回答

0

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

+0

谢谢!我会检查一下,看看我能做些什么。 – 2010-02-03 14:51:20

1

您可以添加条目所有三个INI文件到[文件]部分,给他们相同的目的地的名称,并使用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,但它们也可以编译到设置中。