2011-11-27 80 views
2

我有一個從VS2010安裝項目構建的MSI安裝程序。部分安裝包括添加或修改註冊表項。 (如果安裝是升級,而不是第一次安裝,則會修改密鑰。)直到應用程序快捷方式被點擊後,Windows安裝程序纔會完成安裝?

安裝程序在第一次安裝時工作正常,但是當它是升級時,看起來安裝在應用程序之前保持不完整快捷方式被點擊。我的意思是:安裝成功完成,但是直到點擊安裝過程創建的應用程序快捷方式(即在開始菜單中),這些註冊表項纔會存在。此時,安裝程​​序啓動時出現一條消息,符合Please wait while applicationXXX is configured...。這種情況只會發生一次,之後就會寫出密鑰,並且與宇宙一切都很好。

但爲什麼會發生這種情況?更重要的是,如何「強制」安裝程序完成安裝並寫入這些註冊表項,而無需點擊應用程序快捷方式?我還應該提到直接運行應用程序的可執行文件不會觸發最終的安裝過程;它只有在單擊快捷方式時才起作用。

任何幫助/見解將不勝感激。

回答

1

使用快捷方式時會自動修復安裝,因爲該快捷方式是advertised。這是破損安裝的正常Windows安裝程序行爲。

要確定在升級過程中沒有安裝註冊表項的原因,請嘗試創建一個verbose install log

最有可能您的註冊表項組件的關鍵路徑被視爲已安裝。如果關鍵路徑是文件而不是實際的註冊表項,則可能會發生這種情況。您可以在Component表中檢查關鍵路徑(使用Orca編輯MSI)。

+0

感謝花花公子。良好的信息。從看日誌中學到了一些有趣的東西。升級首先安裝新版本,然後再刪除舊版本。刪除過程刪除了註冊表項。但是,當我嘗試在新安裝項目中複製這種情況時,註冊表項在升級過程中被正確修改,而在原始應用程序被刪除時* *未被刪除。讓我覺得我的安裝程序以某種方式被損壞了。爲了修復它,我只是重命名了註冊表項以及修改它們的值。 –

2

萬一別人有這個問題,原來,真正的罪魁禍首是一個Visual Studio錯誤:http://support.microsoft.com/kb/2418919

+0

這實際上解決了我的問題!我的區別是,我的升級情況是拋出一個錯誤「System.BadImageFormatException:無法加載文件或程序集」C:\ Program Files文件(x86)\ {Program} \ {Assembly} .dll「或其中一個這個程序集是由比當前加載的運行時更新的運行時構建的,無法加載。「我在升級到Visual Studio 2010的同時,也將.NET Framework從3.5.1升級到4.0。 –

相關問題