2010-02-02 17 views
6

Mam instalator WiX, który ma niestandardowe akcje dla poszczególnych funkcji, które muszą zostać wykonane po odinstalowaniu. W tej chwili mam problem, w którym akcje są wykonywane, niezależnie od tego, czy funkcja została faktycznie zainstalowana przez użytkownika. Niestandardowe akcje kończą się niepowodzeniem, ponieważ oczekują pewnych zasobów, a następnie cała instalacja jest zablokowana.Jak wykonać niestandardową akcję w WiX tylko wtedy, gdy odinstalowywana jest zainstalowana funkcja?

Jaki jest prawidłowy sposób uruchomienia działania niestandardowego tylko wtedy, gdy jego funkcja pokrewna jest odinstalowywana? Podaję fragment, który obecnie używam poniżej, jeśli to pomaga.

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom> 

Odpowiedz

16

Spróbuj

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"> 
    <![CDATA[(NOT UPGRADINGPRODUCTCODE) 
      AND (&FeatureName=2) AND (!FeatureName=3)]]> 
</Custom> 

widoczny MSDN dla details składni stan i examples

+0

To się udało. Dzięki! – dskiles

+0

Witaj, Samuelu, proszę wyjaśnić cel! [CDATA [(NOT UPGRADINGPRODUCTCODE) w swoim fragmencie kodu IIRC – sttaq

+0

, który został uwzględniony, ponieważ znajdował się w oryginalnym fragmencie pytania. Celem jest zapewnienie, że niestandardowe działanie jest uruchamiane tylko wtedy, gdy usuwana jest określona funkcja, a nie wtedy, gdy cały produkt jest aktualizowany. –

-3

Wygląda na to, że niestandardowe akcje zostały zerwane i nie obsługują poprawnie brakujących zasobów.

W jaki sposób urząd certyfikacji poradzi sobie z nim, jeśli użytkownik ręcznie usunie pliki? Co się stanie, jeśli użytkownik usunie folder aplikacji, a następnie spróbuje go usunąć przez ARP?

Co się stanie, gdy użytkownik po prostu usunie funkcję, bez odinstalowywania całej aplikacji? Lepiej będzie długoterminowo naprawiać urzędy certyfikacji.

+0

To nie jest odpowiedź na moje pytanie. Wiem, że to nie jest najlepszy sposób, aby to zrobić, ale jestem ograniczony przez starodawny kod, którego nie mogę uniknąć. Biorąc pod uwagę, że nie jest to najlepszy sposób, aby to zrobić, jaki jest najlepszy sposób, aby to zrobić, biorąc pod uwagę ograniczenia? – dskiles

+0

Może wystąpić sytuacja, w której niestandardowy krok nie może wykryć, czy ma być uruchamiany, czy nie, w zależności od środowiska. – Dennis

Powiązane problemy