2011-09-05 9 views
25

mam akcję niestandardową i trzeba się poniżej wartości dla kopiowania niektóre części z folderu instalacyjnego do folderu VS2010Czy istnieje alternatywny sposób uzyskania dostępu do szczegółów sesji w odroczonej akcji niestandardowej?

  1. ścieżka katalogu VS2010 (VS2010DEVENV nieruchomość)
  2. ścieżka instalacji (INSTALLLOCATION nieruchomość)

Aby nadać wystarczające uprawnienia, ustawiłem niestandardową akcję jako Execute='deferred' Impersonate='no'. Ale po uruchomieniu instalatora, to zalogować się komunikat:

nie można uzyskać dostępu szczegóły sesji z non-natychmiastowej akcji niestandardowej

Wydaje się, że nie można uzyskać dostępu do właściwości w „odroczony” niestandardowych działań (tj session["VS2010DEVENV"])

Czy jest jakiś inny sposób, aby móc odzyskać te wartości w razie potrzeby?

Odpowiedz

28

This musi być pomocny. Zwróć szczególną uwagę na dolną część strony, przewodnik 2 kroków, jak przekazywać wartości przez CustomActionData.

Oto fragment:

Aby zapisać wartość nieruchomości do skryptu instalacyjnego do użytku podczas odroczonego wykonanie niestandardowego działania:

  1. włóż małą akcję niestandardową do instalacji sekwencja, która ustawia właściwość będącą przedmiotem zainteresowania dla właściwości o tej samej nazwie, co akcja niestandardowa wykonania odroczonego. Na przykład, jeśli klucz podstawowy dla akcji niestandardowej wykonania odroczonego to "MojaAkcja", ustaw właściwość o nazwie "MojaAkcja" na właściwość X, którą należy pobrać. Musisz ustawić właściwość "MojaAkcja" w sekwencji instalacji przed niestandardową akcją "MojaAkcja". Chociaż dowolny typ niestandardowej akcji może ustawić dane kontekstowe, najprostszą metodą jest użycie niestandardowej akcji przypisania niestandardowej właściwości (na przykład Custom Action Type 51).
  2. W momencie przetwarzania sekwencji instalacyjnej instalator zapisze wartość właściwości X w skrypcie wykonania jako wartość właściwości CustomActionData.
+3

Dzięki za [odniesienie ] (http://msdn.microsoft.com/en-us/library/aa370543.aspx). Właściwość ** CustomActionData ** działa dobrze. Ale zastanawiam się, w jaki sposób możemy przekazać więcej niż jedną wartość. W moim przypadku potrzebuję zarówno VS2010, jak i wartości folderów instalacyjnych. Czy możesz podać jakieś wskazówki, jeśli to możliwe? – jcha

+11

Będziesz musiał przeanalizować ciąg znaków, który przekazujesz w odłożonej akcji niestandardowej. Na przykład możesz przekazać '[VS2010DEVENV] | [INSTALLLOCATION]' i podzielić CustomActionData przez '|' w odroczonym CA. Jeśli używasz DTF dla swojego urzędu certyfikacji, ma on słownikową właściwość CustomActionData i możesz przekazać ją w stylu 'vs2010 = [VS2010DEVENV]; location = [INSTALLLOCATION]' i uzyskać ją w stylu 'session.CustomActionData [" vs2010 "] 'i' session.CustomActionData ["location"] ' –

+0

Świetnie! To całkowicie rozwiązuje moją sprawę. Dziękuję bardzo za porady. – jcha

11

Dodatkowe informacje: wielokrotne wartości nieruchomości mogą być przekazywane za pomocą następującej składni w „akcji niestandardowej Type 51” (który jest w zasadzie tylko akcja niestandardowa że ustawia wartość nieruchomości):

PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=... 

wartości mogą być pobierane z wnętrza akcji niestandardowej tak:

string prop1 = session.CustomActionData["PROPERTY1"]; 
string prop2 = session.CustomActionData["PROPERTY2"]; 

Oto przykład, który wyznacza wartości nieruchomości dla akcji niestandardowej z ID „MyCustomAc cja ":

<CustomAction 
    Id="SetCustomActionPropertyValues" 
    Property="MyCustomAction" 
    Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" /> 

(czytaj this MSDN article więcej szczegółów na temat składni sformatowanej który w tym przykładzie jest używany do pobierania lokalizacji zainstalować z pliku z ID«MyExecutableFile»)

+4

Wielkie dzięki za konkretny przykład. Dokładnie to, czego potrzebowałem. Przyszli goście powinni również zobaczyć [tę odpowiedź] (http://stackoverflow.com/a/11233268/660536) w celu uzyskania dalszych szczegółów i przykładów. – GazTheDestroyer

Powiązane problemy