2014-02-19 68 views
0

我有一個適用於32位和64位平臺的Wix安裝程序msi。
我想阻止它在64位操作系統上安裝32位msi,在32位操作系統上安裝64位msi。
儘管WIX阻止在32位msi上安裝64位msi,但我也想實現反轉。防止在x64上使用PROCESSOR_ARCHITECTURE安裝32位WIX安裝程序WIX的環境變量

我用下面的代碼: -

<?if $(var.Platform)=x86 ?> 
<Condition Message="Setup can not be installed on x64 machine."> 
    <![CDATA[Installed OR Not VersionNT64]]> 
</Condition> 
<?endif?> 

,但它在我的MSI的歡迎頁面顯示。 我想要顯示的消息相同,因爲我得到當我在32位操作系統上安裝64位MSI如

安裝包不被該處理器支持type.Contact您的支持人員

我怎樣才能做到這一點?

+0

我假設你從同一個共同來源構建2個MSI,並將Platform屬性設置爲每個構建的不同值?看看ORCA中內置的MSI,看看數據是否按照您期望的方式編寫。 –

+1

是否有技術上的理由不讓他們在64位系統上安裝32位軟件包?如果只是「他們應該安裝64位版本,但技術上沒有什麼能夠阻止該系統上運行的32位版本」,那麼我建議不要這樣做。有時候人們想做奇怪的事情,並且有*任意*限制可能會令人討厭。 –

回答

2

該條件應該工作!我在想也許變量平臺沒有被正確設置。

你也可以試試這個(這是幾乎一樣的你):

<?if $(var.Platform) = x86 ?> 
     <Condition Message="Setup can not be installed on x64 machine."> 
      <![CDATA[Not VersionNT64]]> 
     </Condition> 
    <?endif?> 

編輯:我取下@Christopher畫家的評論後,平臺= 64的情形,因爲你得到了免費x64 msis。我也嘗試了上面的代碼,它的工作原理。

+0

如果您有x64 MSI,則不需要啓動條件來阻止在x86計算機上安裝,因爲msiexec會爲您執行此操作。 MSI永遠不會啓動並且獲得那麼多。 –

+0

這是如此真實,我被這個問題欺騙:) – IlirB

+0

是的克里斯托弗畫家,你是正確的。 我有x32位msi我想阻止它安裝在x64位操作系統上。 我能夠使用上述條件來實現它,但是這條消息在我的第一個對話框屏幕上彈出,即在我的歡迎屏幕上顯示。 我不想甚至打開我的設置歡迎屏幕,以防萬一我有32位msi和我akm安裝它在64位System.I要打開我的msi之前顯示一條消息。 如果您瞭解我需要什麼或者您有任何解決方案,請讓我知道。 – User

1

我不相信您可以獲得與在x86系統上運行x64 MSI完全相同的行爲。在這種情況下,Windows本身在嘗試運行並顯示消息之前正在檢查MSI體系結構。你已經發明瞭你自己不必要的限制,所以你不能使用與Windows完全相同的方法。

但是我不知道你爲什麼在歡迎頁面看到你的消息。我看到的所有啓動條件都是Windows提供的一個對話框(單擊「確定」後),然後通常會看到一個對話框,指出安裝失敗(但又是失敗對話框由您決定)。所以你應該能夠接近Windows的功能。

+0

好的,謝謝PhilDW的回覆。 – User

相關問題