2016-05-15 74 views
0

我有一個VS2010項目,分別創建一個32位墊片和一個64位墊片。這是一個在.NET中開發的Outlook加載項(因此是填充)。Windows Installer中的32位墊片和64位墊片

隨着x64不久前在Outlook中的出現(從2010年開始),我們一直在不斷製作x86 Windows Installer文件和x64 Windows Installer文件。

我面臨的真正問題是當用戶下載MSI文件時,他們中的很多人不知道他們的Outlook是什麼位數。很多時候,他們安裝了不正確的MSI版本,並且沒有加載到他們的Outlook中。

COM加載對話框(未加載...運行時錯誤等)中報告了一個標準的COM錯誤。

我想避免創建和部署2個獨立的MSI文件......有沒有可能我有一個單一的通用安裝程序?用戶只需下載單個MSI,軟件即可安裝/註冊到相應的Program Files(x86)/Program Files

這可能嗎?

我已經看過WiX和InstallShield,但並不十分熱衷於這些工作。使用VS2010中內置的Windows安裝程序可以做到我想實現的目標嗎?

回答

0

您可以創建一個MSI安裝程序 - 它可以是WiX,Windows Installer或其他。您只需添加一個自定義操作,您可以在其中檢測Outlook位並在計算機上註冊正確的加載程序。有關更多信息,請參見Windows Installer Setup With Custom Actions

+0

你會在這裏談論什麼裝載機?如果我發現Outlook的正確位數,我不能只啓動靜默MSI安裝嗎? –

0

您仍然需要兩個單獨的MSI文件。請參閱:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367451(v=vs.85).aspx

尤其是它說,32位軟件包需要包含32位組件。

問題在於下載之前,您的下載器/安裝程序需要檢測系統上Outlook的位數。

您可以爲您的Outlook加載項創建32位和64位合併模塊,並將32位合併模塊包括在32位軟件包中,以及32位和64位合併模塊在你的64位設置中,以便它記錄兩個位。如果用戶從32位Outlook遷移到64位,則他們不需要重新安裝產品。

無法在32位系統上安裝64位MSI,因此出現的錯誤必須是在64位Outlook系統上安裝32位MSI。如果64位Outlook的檢測機制可能包含在32位MSI中作爲啓動條件,則可以防止出現此錯誤。

+0

能否詳細說明「合併模塊」 –

+0

在VS中,只需創建一個合併模塊項目(其中一個安裝程序項目類型),即可添加文件並構建MSM。然後,您可以將其添加到MSI安裝項目中。 – PhilDW