共用方式為


防止舊套件透過較新版本安裝

如果使用者已安裝較新版本,則可以撰寫 Windows Installer 升級套件,讓主要升級無法安裝。 本主題中的程式只能防止執行主要升級套件所造成的降級。 此程式依賴 FindRelatedProducts Action,此動作只會在第一次安裝期間執行,而且不會在維護模式中執行(重新安裝)。 因為次要升級是使用重新安裝來執行,所以此程式無法用來判斷次要升級套件是否嘗試降級應用程式。 如需更多資訊,請參閱 應用程式的準備以進行未來的重大升級

防止舊套件透過較新版本安裝

  1. 請在 升級表中的 UpgradeCode 資料行,輸入針對可能有資格接收此升級之相關產品的 UpgradeCode 屬性。

  2. Upgrade Table的屬性列中,輸入 msidbUpgradeAttributesOnlyDetect 位元標誌。

  3. 將此套件所提供的升級版本輸入 Upgrade Table的 VersionMin 資料行。 將 VersionMax 資料行保留空白。

  4. 升級表的 ActionProperty 欄中,輸入由 FindRelatedProducts 動作 所要設定的屬性名稱。

  5. SecureCustomProperties 屬性及 Upgrade Table 中 ActionProperty 欄中指定名稱的屬性新增至 Property Table

  6. InstallExecuteSequence 資料表中的 FindRelatedProducts 動作之後,新增 自定義動作類型 19。 在 CustomAction 資料表 中包含此動作的記錄,並在 [目標] 資料行中輸入要顯示的文字。 類型 19 自定義動作內建在安裝程式中,因此沒有程式代碼可撰寫。

  7. 將 ActionProperty 的名稱輸入至 InstallExecuteSequence Table 中記錄的 [條件] 資料行,其中包含 自定義動作類型 19。 只有在 升級數據表 偵測到已安裝較新版本時,才會執行自定義動作。

    例如,將一組相關產品升級至 3.0 版的 Windows Installer 套件,可能會在其 UpgradeCustomActionInstallExecuteSequenceProperty 數據表中包含下列記錄。 群組中的所有相關產品都有相同的UpgradeCode,但如果電腦上已安裝3.0以上的版本,安裝程式就不會安裝此升級套件。 在此情況下,安裝程式會顯示錯誤訊息,且安裝失敗。 3.0 版升級套件會在 1.0 和 2.0 版的基礎上安裝。

    升級表格

    升級代碼 VersionMin VersionMax 語言 屬性 刪除 ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect 發現新產品
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive 找到升級

     

    CustomAction 資料表

    行動 類型 目標
    CA1 19 已安裝更高版本的升級。

     

    InstallExecuteSequence 資料表

    行動 條件 序列
    尋找相關產品 200
    CA1 找到新產品 201

     

    屬性數據表

    財產 價值
    SecureCustomProperties 新產品發現;升級發現