2010-02-01 46 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,但它們也可以編譯到設置中。