2012-10-30 68 views
13

我需要部署一個針對Windows 64位和32位的軟件設置。我有兩個獨立的Windows Installer數據庫(用WiX爲每個平臺創建),並且我使用dotNetInstaller將兩者合併到一個安裝引導程序可執行文件中。如何將64位和32位Windows安裝程序包作爲單個安裝程序部署?

我目前使用的是dotNetInstaller的版本1.10,並設置了auto_close_if_installed=True,因爲我想從用戶角色隱藏引導程序。儘管如此,dotNetInstaller堅持在我的安裝程序運行時顯示一個窗臺進度條窗口,並且不會真正自動關閉。用戶需要確認一個對話框,告訴他該應用程序已成功安裝。但真正的優勢是它不支持Windows 8(還)。

升級到dotNetInstaller的更高版本似乎打破auto_close_if_installed,所以它更糟糕。

所以我的問題是:當前的技術狀態是在單個可執行文件中部署這兩個設置。請問Wix Burn是否是一個選項?

我知道,在一個理想的世界中,我只是爲我的客戶提供適用於任一平臺的單獨安裝程序。但他們碰巧完全不瞭解這些微妙之處,他們中的大多數甚至不知道他們使用的是什麼平臺。

+2

我以前用過這個燒傷,但感覺有點像矯枉過正。我很想看看其他人的想法。 – bricelam

+1

@Brice:事情是,燒傷似乎也不是很可靠。 Visual Studio Update 1 CTP 3使用它進行部署,並且由於Burn而無法在我的計算機上安裝:[Microsoft Connect 766849](https://connect.microsoft.com/VisualStudio/feedback/details/766849/visual- studio-2012-update-1-ctp-3-crash-installation-during) –

+4

我建議爲此燒錄,一個包裝上標有InstallCondition =「NOT VersionNT64」,另一個InstallCondition =「VersionNT64」。使用刻錄可以創建一個exe包,用戶不必運行正確的包。 – Neil

回答

21

我肯定會在這種情況下使用刻錄。類似於以下內容:

<Wix> 
    <Bundle...> 
    <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.HyperlinkLicense' /> 

    <Chain> 
     <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' /> 
     <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' /> 
    </Chain> 
    </Bundle> 
</Wix> 

這正是Burn旨在處理的情景之一。

+2

是的,確切地說。這就是我最終做的。我會接受你的答案,以備將來參考他人。 –

+1

對於WiX 3.7,似乎MsiPackage上不允許使用Condition屬性。事情是3.8還是最近發生了變化? –

+1

示例中的錯字。 'Condition'應該是'InstallCondition'。 –

0

您可以通過條件和功能在單個Wix中執行此操作。

<Feature Id='X86' Level='1'> 
    <ComponentRef Id='X86Feature1' /> 
    <Condition Level="1">NOT VersionNT64</Condition> 
</Feature> 
+3

爲什麼downvote? – dvallejo

+0

我沒有投票上或下。但是你認爲你仔細閱讀了這個問題嗎?目標是將兩個MSI與引導器相結合,不是嗎? – harper

相關問題