2012-07-03 52 views
1

我正在爲我的應用程序編寫一個inno安裝程序安裝程序。我希望這個安裝程序既可以作爲完整的安裝程序,也可以作爲更新,這取決於如果我的應用程序已經安裝。如何使用inno安裝完全安裝時創建卸載密鑰?

我能夠創建一個「更新」安裝與inno安裝程序,將替換舊文件,如果我的應用程序已安裝。如果沒有,它只會做一個完整的安裝。

問題是在Windows中卸載密鑰。 Inno安裝爲每次安裝創建一個卸載密鑰。所以如果我進行更新,我的應用程序將會有兩個卸載鍵。如果我禁用創建卸載密鑰,那麼完整安裝將不會創建它。

CreateUninstallRegKey和UpdateUninstallLogAppName可以在運行時關閉嗎?

+1

你錯了。如果設置具有相同的AppID,則它們將是相同的安裝並具有相同的卸載條目。我從你的評論中認爲他們共享相同的AppID進行升級。有關更多詳細信息,請參閱[本文](http://www.vincenzo.net/isxkb/index.php?title=Upgrades)。 – Deanna

回答

4

如果您的完整安裝和更新安裝(通常是這種情況)之間的大小差異相當小,那麼您應該使兩者實際上成爲完全相同的安裝程序。

最簡單(也是最可靠)的方法是確保你設置一個單獨的AppId(如果你已經有一些沒有做到這一點,那麼將AppId設置爲與現有AppName)。

接下來,檢查您的[Files]條目;確保在所有文件上都指定了相應的Flags。 (一般情況下,安裝到{app}文件通常應該有「ignoreversion‘;用戶可編輯的文件應該有’onlyifdoesntexist‘;共享庫應該有’replacesameversion sharedfile」,但你可能需要的東西在特定情況下的不同。)

然後,只需設置DisableDirPage=autoDisableProgramGroupPage=auto(並將所有其他設置保留爲默認值),Inno將使用原始安裝期間輸入的值自動跳過目錄和開始菜單選擇頁以進行升級。沒有混亂,沒有大驚小怪。

+0

從我+1,你和迪安娜是對的,我剛剛回答了這個問題,因爲它沒有考慮到結果。謝謝! – TLama

相關問題