Udostępnij za pośrednictwem


Zapobieganie instalacji starego pakietu na nowszą wersję

Pakiety uaktualniania Instalatora Windows można tworzyć, aby nie instalować głównych uaktualnień, jeśli użytkownik ma już zainstalowaną nowszą wersję. Procedura opisana w tym temacie może uniemożliwić tylko obniżenie poziomu, które mogą być spowodowane uruchomieniem głównego pakietu uaktualnienia. Ta procedura opiera się na akcji FindRelatedProducts, która jest uruchamiana tylko przy pierwszej instalacji i nie jest uruchamiana w trybie konserwacji (reinstalacji). Ponieważ uaktualnienia pomocnicze są wykonywane przy użyciu ponownej instalacji, tej procedury nie można użyć do określenia, czy pakiet uaktualnienia pomocniczego próbuje obniżyć wersję aplikacji. Aby uzyskać więcej informacji, zobacz Przygotowywanie aplikacji do przyszłych głównych uaktualnień.

Aby zapobiec instalowaniu starego pakietu w nowszej wersji

  1. Wprowadź właściwość UpgradeCode dla grupy powiązanych produktów, które mogą kwalifikować się do otrzymania tego uaktualnienia w kolumnie UpgradeCode tabeli uaktualnienia.

  2. Wprowadź flagę msidbUpgradeAttributesOnlyDetect bit w kolumnie Atrybuty tabeli uaktualnienia.

  3. Wprowadź wersję uaktualnienia dostarczonego przez ten pakiet w kolumnie VersionMin tabeli uaktualnienia . Pozostaw pustą kolumnę VersionMax.

  4. Wprowadź nazwę właściwości, która ma zostać ustawiona przez akcję FindRelatedProducts do kolumny ActionProperty tabeli Tabela uaktualnień.

  5. Dodaj właściwość SecureCustomProperties oraz właściwość nazwaną w kolumnie ActionProperty tabeli Upgrade do tabeli Property .

  6. Dodaj typ akcji niestandardowy 19 po akcji FindRelatedProducts w tabeli InstallExecuteSequence . Uwzględnij rekord w tabeli CustomAction dla tej akcji i wprowadź tekst, który ma być wyświetlany w kolumnie Target. Typ 19 akcji niestandardowej jest wbudowany w instalator, więc nie ma potrzeby pisania kodu.

  7. Wprowadź nazwę właściwości ActionProperty w kolumnie Warunek rekordu w tabeli InstallExecuteSequence, która zawiera niestandardową akcję typu 19 . Warunek ten powoduje wykonanie akcji niestandardowej tylko wtedy, gdy Tabela aktualizacji wykryje, że nowsza wersja jest już zainstalowana.

    Na przykład pakiet Instalatora Windows, który uaktualnia grupę powiązanych produktów do wersji 3.0, może zawierać następujące rekordy w tabelach Upgrade, CustomAction, InstallExecuteSequenceoraz Property. Wszystkie powiązane produkty w grupie mają ten sam kod uaktualnienia, ale instalator nie instaluje tego pakietu uaktualnienia, jeśli na komputerze jest już zainstalowana wersja nowsza niż 3.0. W takim przypadku Instalator wyświetla komunikat o błędzie i instalacja kończy się niepowodzeniem. Pakiet aktualizacji do wersji 3.0 instaluje się na wersjach 1.0 i 2.0.

    Tabela aktualizacji

    KodUaktualnienia VersionMin VersionMax Język Atrybuty Usunąć ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect ZNALEZIONO_NOWY_PRODUKT
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive ZNALEZIONO AKTUALIZACJĘ

     

    Tabela CustomAction

    Akcja Typ Źródło Cel
    CA1 19 Wyższe uaktualnienie jest już zainstalowane.

     

    InstallExecuteSequence Table

    Akcja Warunek Kolejność
    ZnajdźPowiązaneProdukty 200
    CA1 ZNALEZIONO NOWY PRODUKT 201

     

    Tabela właściwości

    Własność Wartość
    SecureCustomProperties NOWY PRODUKT ZNALEZIONO; AKTUALIZACJA ZNALEZIONO