另一個不錯的技巧時自動安裝的建築是使用GetFileVersion
預處理器(ISPP)宏。這樣你就不必以硬編碼的形式複製你的(二進制)文件的版本號(就像在Tom的settings.txt
中一樣) - 安裝程序編譯器會以這種方式從文件的版本資源中簡單地讀取它。例如:
#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)
[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup
此外,還可以經由/d
命令行開關轉發的符號給編譯器,例如:
iscc.exe /dSpecialEdition ...
再後來使用這些中ifdef
s到創建不同類型的安裝的(笨示例如下圖):
[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif
謝謝!偉大的迴應。我做了谷歌它,但我發現沒有簡單的方法馬上做到這一點。我對如何進行了一個想法,但我不是100%肯定的。包含文件的建議非常簡潔,因爲我可以從其他構建選項中生成該文件。 – 2008-10-07 12:49:29
很高興聽到,讓我知道如果你需要另一個INNO提示 – Tom 2008-10-08 07:56:42