2011-02-07 51 views
3

我們有一個installshield產品,我們在項目的生命週期中擁有相同的升級代碼。不知何故,一個新的升級代碼發佈了一個版本,所以現在我們開始在客戶的添加/刪除程序中看到多個條目。Installshield - 需要刪除具有「不良」升級代碼的產品

有沒有辦法(安裝腳本,也許?)通過並檢查產品的另一個升級代碼,並將其刪除,如果它不符合當前的(我們將重置它回到舊的一個,永遠不會改變它!)?

在此先感謝您的時間!

+0

謝謝克里斯託弗......我們將在接下來的幾天內爲此工作。我真的很感激你花時間! – Jamie 2011-02-07 21:02:19

回答

5

安裝程序可以刪除屬於任何數量的UpgradeCode系列的產品。只需創建另一個MajorUpgrade規則(升級表)來覆蓋舊的和新的UpgradeCode,你應該沒問題。

1

檢查應用程序安裝信息存儲在系統註冊表中的位置。如果您可以找到產品代碼的存儲位置,則可以編寫一個腳本來從註冊表中讀取代碼,然後執行刪除程序腳本。

1

我剛剛經歷過這個,我感到很痛苦。我們使用VS 2005來構建我們的MSI,無論出於何種原因,我在上一個版本中意外更改了升級代碼。這導致程序在添加/刪除程序對話框中顯示兩次,儘管設置了RemovePreviousVersions標誌。我發現我必須編輯升級表才能放入更新代碼的條目。

這個過程對於使用InstallShield的你來說應該會更容易些,但是我將包含我必須使用的VS指令以防萬一。在VS 2005中,你無權編輯升級表(至少我找不到它),所以我不得不安裝一個名爲Microsoft Orca的程序(MS有一些很酷的代碼名稱,但可怕產品名稱)。它帶有Windows SDK,所以我已經在我的電腦上安裝了它。這裏是鏈接:http://msdn.microsoft.com/en-us/library/aa370557%28v=vs.85%29.aspx

在該程序中打開你的MSI文件,你會看到升級到列表底部。您必須爲要處理的升級代碼添加一個新條目。下面是解釋它的鏈接: http://msdn.microsoft.com/en-us/library/aa372379%28VS.85%29.aspx

我做了一個新行,我想撈出,用正確的版本號,與4(msidbUpgradeAttributesIgnoreRemoveFailure)的屬性的升級代碼和PREVIOUSVERSIONSINSTALLED的ActionProperty。

如果我正確理解這一點,我基本上告訴MSI,結合RemovePreviousVersions標誌,它會考慮其他升級代碼並將其刪除。它在我的情況下工作,所以希望有一些對你有幫助。

祝你好運!