2010-03-05 11 views
5

Jak wykryjesz, że instalacja działa w trybie cichym?Wykryj dyskretną instalację w .NET Custom Action

Mam niestandardową aplikację, do której dodałem projekt konfiguracji .msi. Uruchamiam plik .msi przy pomocy przełącznika/qb, a w moim niestandardowym kodzie C# instalatora chciałbym móc to wykryć.

Edytuj: nobugs mówi, aby przetestować właściwość UILevel. Jak uzyskać dostęp do właściwości UILevel z klasy pochodzącej z klasy System.Configuration.Install.Installer?

+0

Co instalujesz? DO#? Aplikacja niestandardowa? –

+0

Edytowałem pytanie, stwierdzając, że jest to niestandardowa aplikacja, do której dodałem projekt instalacji, aby utworzyć instalator .msi. –

Odpowiedz

10

Biorąc wskazówkę od nobugz, zrobiłem co następuje:

  1. o działaniach widoku niestandardowego projektu instalacji msi, dodałem następujące do mojego CustomActionData (zdać UILevel przez mojego zwyczaju instalator):

    /UILevel = "[UILevel]"

  2. ciągu mojego kodu C# dla kodu pochodzącego z Instalatora klasy bazowej, dodałem kod aby otrzymać wartość:

    string uiLevelString = Context.Parameters ["UILevel"];

  3. Był wtedy prosty do parsowania ciąg dla wartości int. Jeśli wartość to < = 3, jest to instalacja cicha.

+1

czy mógłbyś szczegółowo opisać na etapie 2 - gdzie dokładnie piszesz ten kod, na którym zdarzeniu klasy pochodnej? Z góry dziękuję –

+1

@Andrei Cristof W kroku 2 zrobiłem nadpisanie metody "Zainstaluj". –

0

Po pierwsze chciałbym zwrócić uwagę, że InstallUtil to bardzo zły wzór. Zabrakło im procesu, tatoo proces z wersją CLR, a gdy im się nie uda, podnoszą modalne okno dialogowe o błędzie 1001 nawet podczas cichej instalacji.

Zamiast tego należy użyć wzoru DTF WiX.

MsiGetMode (Session.Mode) jest ograniczony podczas odroczonego wykonywania, więc będziesz musiał serializować i deserializować UILevel.

http://www.msifaq.com/a/1044.htm