共用方式為


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

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

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

  1. 針對可能有資格接收此升級的相關產品群組,輸入 UpgradeCode 屬性至 Upgrade Table的 UpgradeCode 資料行。

  2. 升級資料表的 [屬性] 資料行中,輸入msidbUpgradeAttributesOnlyDetect位旗標。

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

  4. FindRelatedProducts Action 所設定的屬性名稱輸入 升級資料表的 ActionProperty 資料行。

  5. Upgrade Table之 ActionProperty 資料行中名為 的SecureCustomProperties屬性和屬性新增至屬性資料表

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

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

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

    升級資料表

    UpgradeCode VersionMin VersionMax 語言 屬性 移除 ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    CustomAction 資料表

    動作 類型 來源 目標
    CA1 19 已安裝較高的升級。

     

    InstallExecuteSequence 資料表

    動作 條件 順序
    FindRelatedProducts 200
    CA1 NEWPRODUCTFOUND 201

     

    屬性工作表

    屬性
    SecureCustomProperties NEWPRODUCTFOUND;UPGRADEFOUND