2017-09-05 61 views

回答

4

有幾個可能的原因:

  1. 這可能是一個InstallShield設置創建要安裝MSI文件。如果是這樣,您需要找到它的UpgradeCode並在您的WiX中使用升級元素,或使用與舊產品相同的UpgradeCode並執行重大升級。

  2. 如果它不是基於MSI的,那是一團糟。我見過的一種技術是在註冊表中找到該產品的UninstallString。您可以使用RegistrySearch將其讀取到某個屬性中。你用它做什麼取決於你想要什麼樣的卸載。一旦你有卸載字符串命令有幾件事情你需要擔心:

    a。如果將該卸載字符串命令作爲即時自定義操作運行,則可能會失敗,因爲不立即提供自定義操作。

    b。如果您希望它保持沉默狀態,則必須以編程方式檢查卸載命令字符串並添加無提示開關,並且這將取決於InstallShield使用的任何版本。可能還會有「顯示卸載進度」選項。

    ℃。如果以默認方式運行卸載作爲延遲自定義操作,則它會在模擬=否時提升,但如果它靜默失敗並且無論如何您的安裝都會繼續,那麼將會安裝舊版和新版。 d)。如果在卸載較舊的產品後安裝失敗,用戶將不會安裝任何產品。

換句話說,情況2中沒有好的選擇,因爲失敗的機率很高。在大多數情況下,安全的答案是檢測舊產品並要求用戶手動卸載它。一旦進入MSI模式,您可以使用MajorUpgrade元素無縫升級。

+0

我已經通過你的第一種可能性,現在它工作正常。非常感謝你的建議,其實我是Stackowerflow的新成員,所以我不能投票給你。我希望我能夠爲你投票。 –

+0

對於非MSI,「安全的答案是檢測舊產品並要求用戶手動卸載它」看起來像是一個警察,但是非常合理。 –

相關問題