2011-09-05 1 views
25

나는 사용자 지정 작업을하고 VS2010 폴더에 설치 폴더에서 일부를 복사 값 이하로 얻을 필요가연기 된 사용자 지정 작업의 세션 세부 정보에 액세스하는 다른 방법이 있습니까?

  1. VS2010 디렉토리 경로 (VS2010DEVENV 속성)
  2. 설치 경로 (INSTALLLOCATION 속성)

충분한 권한을 부여하기 위해 사용자 지정 작업을 Execute='deferred' Impersonate='no'으로 설정했습니다. 설치 프로그램을 실행할 때, 그것은 메시지를 기록 :

우리가 "연기"사용자 지정 작업의 속성에 액세스 할 수없는 것 아닌 즉각적인 사용자 지정 작업에서 세션 정보에 액세스 할 수 없습니다 (즉, session["VS2010DEVENV"])

필요에 따라 그 값을 검색 할 수있는 다른 방법이 있습니까?

답변

28

This이 도움이됩니다. CustomActionData을 통해 값을 전달하는 방법 2 단계의 가이드 라인 인 페이지 하단에 특히주의하십시오.

  1. 설치에 작은 사용자 지정 작업을 삽입 :

    가 지연된 실행 사용자 지정 작업시 사용 의 설치 스크립트에 속성 값을 작성하는 방법 : 여기

    는 발췌 한 것입니다 시퀀스는 같은 이름을 가진 속성에 관심 속성을 지연 실행 사용자 지정 동작으로 설정합니다. 예를 들어 지연 실행 사용자 지정 작업의 기본 키 이 "MyAction"인 경우 검색 할 속성 X에 "MyAction"이라는 속성 을 설정합니다. 은 "MyAction"사용자 지정 작업 전에 설치 시퀀스에서 "MyAction"속성을 설정해야합니다. 모든 유형의 사용자 지정 작업이 컨텍스트 데이터를 설정할 수 있지만 가장 간단한 방법은 속성 지정 작업 (예 : 사용자 지정 작업 유형 51)을 사용하는 것입니다.
  2. 설치 시퀀스가 ​​처리 될 때 설치 관리자는 속성 X 값을 실행 스크립트 의 CustomActionData 속성 값으로 씁니다.
+3

감사 MyExecutableFile ") ] (http://msdn.microsoft.com/en-us/library/aa370543.aspx). ** CustomActionData ** 속성이 잘 작동합니다. 그러나 나는 하나 이상의 가치를 전달할 수 있을지 궁금해하고 있습니다. 필자의 경우, VS2010과 설치 폴더 값이 모두 필요합니다. 가능한 경우 힌트를 줄 수 있습니까? – jcha

+11

지연된 사용자 지정 동작에서 전달한 문자열을 구문 분석해야합니다. 예를 들어,'[VS2010DEVENV] | [INSTALLLOCATION]'을 전달할 수 있고 지연된 CA에서 CustomActionData를'| '로 나눌 수 있습니다. CA에 DTF를 사용한다면, CustomActionData 속성과 같은 사전을 가지며,'vs2010 = [VS2010DEVENV]; location = [INSTALLLOCATION]'처럼 전달할 수 있으며'session.CustomActionData [ "vs2010"] '와'session.CustomActionData [ "location"]' –

+0

위대한! 그것은 내 사건을 완전히 해결한다. 귀하의 조언에 감사드립니다. – jcha

11

추가 세부 정보 :

PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=... 
: 여러 속성 값은 (기본적으로 속성 값을 설정 단지 지정 작업이다)는 "사용자 지정 작업 유형 (51)"에 다음과 같은 구문을 사용하여 전달 될 수 있습니다

값은이 같은 사용자 지정 동작 내에서 검색 될 수있다 : 여기

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

MyCustomAc는 "ID와 사용자 액션에 대한 속성 값을 설정하는 예이다 기 "

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

(이 예에서이 ID를 가진 파일의 설치 위치를 검색하는 데 사용되는 형식의 구문에 대한 자세한 내용은 this MSDN article을 읽기"에서 [참조

+4

구체적인 예를 들어 주셔서 감사합니다. 내가 필요한 것. 미래의 방문자는 자세한 내용과 예제를 보려면 [이 답변] (http://stackoverflow.com/a/11233268/660536)도 참조하십시오. – GazTheDestroyer

관련 문제