WiX를 사용하여 CustomActionData를 CustomAction에 전달하는 방법은 무엇입니까?
지연된 사용자 지정 작업 에서 CustomActionData 에 속성을 설정하는 방법은 무엇입니까?
지연된 사용자 지정 작업은 설치 프로그램 속성에 직접 액세스 할 수 없습니다 ( 참조 ). 사실, CustomActionData
재산 만
session.CustomActionData
여기 에 나열된 기타 메서드 및 속성 은 세션 개체에서 사용할 수 있습니다.
따라서 지연된 사용자 지정 작업 INSTALLLOCATION
이. ~ session.CustomActionData
. ( 참조 및 참조 참조 )
다음은에서 CustomAction1
검색 할 수있는 속성을 설정하는 유형 51 사용자 지정 작업 ( ) 의 예입니다 CustomAction2
.
<CustomAction Id="CustomAction1"
Property="CustomAction2"
Value="SomeCustomActionDataKey=[INSTALLLOCATION]"
/>
통지 Property
속성 이름입니다 CustomAction2
. 이것은 중요하다. 유형 51 작업의 속성 속성 값은를 소비하는 사용자 지정 작업의 이름과 같거나 같아야합니다 CustomActionData
. (참조 참조 )
속성 키 / 값 쌍 의 이름 SomeCustomActionDataKey
이 Value
보이십니까? 소비 사용자 지정 작업 ( CustomAction2
) 의 C # 코드에서 CustomActionData
다음 식을 사용하여 해당 속성을 조회 합니다.
string somedata = session.CustomActionData["SomeCustomActionDataKey"];
값을 검색하는 데 사용하는 키 는 유형 51 사용자 지정 작업의 속성 CustomActionData
값이 Property
아니라 속성 key=value
쌍 의 키입니다 Value
. ( 중요 사항 : CustomActionData
사용자 지정 작업의 ID와 이름이 같은 설치 프로그램 속성을 설정하여 채워지지만 CustomActionData
키는 설치 프로그램 속성이 아닙니다. ) (참조 참조 )
이 시나리오에서 소비하는 사용자 지정 작업은 아래와 같이 정의 된 지연된 사용자 지정 작업입니다.
<Binary Id="SomeIdForYourBinary" SourceFile="SomePathToYourDll" />
<CustomAction Id="CustomAction2"
BinaryKey="SomeIdForYourBinary"
DllEntry="YourCustomActionMethodName"
Execute="deferred"
Return="check"
HideTarget="no"
/>
InstallExecuteSequence 구성
물론 소비 사용자 지정 작업 ( CustomAction2
)은 유형 51 사용자 지정 작업 ( CustomAction1
) 이후에 실행되어야합니다 . 따라서 다음과 같이 예약해야합니다.
<InstallExecuteSequence>
<!--Schedule the execution of the custom actions in the install sequence.-->
<Custom Action="CustomAction1" Before="CustomAction2" />
<Custom Action="CustomAction2" After="[SomeInstallerAction]" />
</InstallExecuteSequence>
C ++ schlubs의 경우 다음과 같이 속성을 검색합니다.
MsiGetProperty(hInstall, "CustomActionData", buf, &buflen);
그런 다음 'buf'를 구문 분석합니다. Bondbhai에 감사드립니다 .
사용자 지정 작업에 전달 된 값이 키 / 쌍 집합이 아닌 경우 ...
즉
<SetProperty Id="CustomAction1" Before="CustomAction1" Value="data" Sequence="execute"/>
<CustomAction Id="CustomAction1" BinaryKey="BinaryId" DllEntry="MethodName" Execute="deferred"/>
... 다음을 사용하여 전체 blob을 검색 할 수 있습니다.
string data = session["CustomActionData"];
'program story' 카테고리의 다른 글
C에서 한 줄씩 텍스트 파일을 살펴보기 (0) | 2021.01.10 |
---|---|
emerge 대신 git mergetool로 kdiff3을 구성하는 방법은 무엇입니까? (0) | 2021.01.10 |
.isin ( 'X')가 아닌 행 제거 (0) | 2021.01.10 |
탐색 창-서랍 뒤에있는 항목에 대한 클릭 스루 비활성화 (0) | 2021.01.10 |
Pandas / NumPy에서 열 / 변수가 숫자인지 여부를 확인하는 방법은 무엇입니까? (0) | 2021.01.10 |