2015-10-20 57 views
0

我有現有的產品,它使用installshield 2011來生成msi。InstallShield的中止和退出命令無法在windows 2012 r2服務器上運行

目前我們計劃支持windows server 2012 R2,但現有的代碼不起作用。

我們有一個場景,我們檢查某些依賴項是否丟失,我們中止或退出,但這不適用於Windows 2012 R2。

是否有任何其他方式來處理這個問題,我已經在一些論壇上檢查過它返回「ERROR_INSTALL_FAILURE」,但是我不能從customAction的大部分部分返回。

我該如何中止安裝在同一點。

感謝,

回答

1

我相信不存在與未促成ERROR_INSTALL_FAILURE從被沿途的固定的安裝InstallScript自定義操作返回abort問題;您可以通過在您使用的版本之後查看InstallShield版本的發行說明來驗證此情況。如果升級是一個選項,那可能是最簡單的,因爲InstallShield 2011並不正式支持Windows Server 2012 R2。 (這有助於我的僱主繼續支付我的費用。)

如果您想修復您擁有的行爲,這聽起來像您說的問題是您擁有深層嵌套功能,無法輕鬆將ERROR_INSTALL_FAILURE自定義操作入口點。最少侵入性的變化可能是使用例外和exception handling。您可以將try/catch/endcatch放入您的入口點函數(或多個函數)中,並使用Err.Raise在先前使用abort的位置引發異常。與鏈接示例不同,Err.Raisetry/catch/endcatch將故意處於不同的功能。

請注意,如果您使用abort使用Err.Raise改變功能與其他功能調用時,觀察到的行爲可能與函數的區別,除非他們同樣異常翻譯成他們首選的行爲。

相關問題