2012-02-14 104 views
3

在innosetup腳本就可以定義這樣的消息:更改消息/在運行時的文本(Inno Setup的)

[Messages] 
WelcomeLabel2=This wizard will update [name] to version [name/ver] 

現在我想在運行時更改此消息,像這樣:

procedure InitializeWizard; 
begin 
    //this doesn't work   
    WelcomeLabel2=NEW MESSAGE 
end; 

這樣做的正確方法是什麼?我想動態更改歡迎頁面的內容以顯示設置是否正在執行新的安裝或更新。基於安裝目錄中的一些可執行文件的存在。

回答

5

單程;

[Languages] 
Name: "en"; MessagesFile: "compiler:Default.isl" 

[CustomMessages] 
en.WelcomeLabel2_ForInstall=intstall {#SetupSetting("AppName")}, {#SetupSetting("AppVersion")} 
en.WelcomeLabel2_ForUpdate=update {#SetupSetting("AppName")} to {#SetupSetting("AppVersion")} 

[code] 
procedure InitializeWizard(); 
var 
    message: string; 
begin 
    //some logic 
    message := 'WelcomeLabel2_ForUpdate'; 
    WizardForm.WelcomeLabel2.Caption := CustomMessage(message); 
end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    case CurPageID of 
     wpFinished : WizardForm.FinishedLabel.Caption := 'bla bla'; 
    end; 
end; 
+0

我也想用WizardForm.FinishedLabelNoIcons.Caption來做到這一點,但Inno Setup編譯器錯誤與「未知的標識符」。 – koen 2012-02-14 14:40:52

+0

更新上面,似乎你可以通過'WizardForm.FinishedLabel'(但不是在'InitializeWizard') – 2012-02-14 15:01:34

+0

謝謝亞歷克斯。我必須更改很多消息,以便動態更改代碼部分中的MessagesFile是一個更好的主意。你知道怎麼做嗎? – koen 2012-02-14 21:10:09

0

嗯,這不行,我想。一種方法是爲安裝程序創建兩個頁面 - 一個用於安裝過程的佈局,另一個用於更新過程的佈局。然後,以手動決定顯示哪一個的方式更改頁面順序。

在我的回答here中可以找到將新頁面集成到流程中的示例。

+0

是否可以根據歡迎頁面創建新頁面?或者我是否需要重新創建歡迎頁面? – koen 2012-02-14 12:34:00

+0

儘管Alex K.的解決方案是正確的:我不認爲有什麼像「頁面繼承」 - 你必須從頭開始創建頁面。 – 2012-02-14 15:17:25

相關問題