WiX 3.0을 사용하고 있습니다. 업그레이드를 수행 할 때 모든 레지스트리 설정을 유지하려고합니다. 나는 그것이 간단하게 보이는 생각했기 때문에 업그레이드시 레지스트리 설정 유지
나는 다음 링크를 내가 재산 및 RegistrySearch 방식이 아닌 사용자 지정 작업 방식을 사용하는 것을 선호 http://www.mail-archive.com/[email protected]/msg28844.html을 발견했다.
불행히도,이 접근법은 나에게 잘 맞지 않습니다. 내 프로젝트에는 일부 DWORD 및 SZ 유형 레지스트리 값이 있습니다. 모든 DWORD 형식 레지스트리 값의 경우 앞에 #이 추가됩니다. WiX 참조 설명서를 확인했습니다. 이것이 RegistrySearch의 작동 방식입니다.
업그레이드 후 결과는 모두 내 DWORD 유형 레지스트리가 SZ로 변경됩니다. 값 앞에 #이 붙는 것을 제외하고는 값이 같습니다. 예를 들어, DWORD 형식의 "LogLevel"레지스트리 값에서 값 2를 얻었습니다. 업그레이드 후 동일한 위치에 SZ 유형의 "LogLevel"레지스트리 값에서 "# 2"값을 얻습니다. 여기
내가 다시 넣어 전에 나를 LOG_LEVEL 속성에서 "#"을 잘라내 도움이 될 수있는 문자열 함수가 있는지 궁금 코드 조각<Property Id='LOG_LEVEL' Value='Information'>
<RegistrySearch Id='LogLevelRegistry' Type='raw' Root='HKLM' Key='Software\Company\Product' Name='LogLevel' Win64='$(var.Win64)'/>
</Property>
<Component Id="RegistryKey">
<RegistryKey Root='HKLM' Key='Software\Company\Product' Action='createAndRemoveOnUninstall'>
<RegistryValue Type='int' Name='LogLevel' Value='[LOG_LEVEL]'/>
</RegistryKey>
</Component>
입니다. 또는 업그레이드를 수행 할 때 레지스트리 키를 보존하는 더 똑똑한 방법이 있습니까? 맞춤 동작 방식을 선택해야합니까?
고마워요, 오늘 체크 아웃하겠습니다 –
wixext를 다운로드하고 시도했습니다. 해당 SystemToolsMsi.wxs 샘플에서 사용합니다 레지스트리 백업을 수행하십시오. 분명히, 설치 롤백 때만 백업 레지스트리를 복원 할 수 있습니다. 설치가 커밋 될 때도 백업 레지스트리를 복원하고 싶습니다. 어쨌든, 이것은 나에게 좋은 힌트를 제공합니다. 사용자 지정 작업에 대해 더 잘 이해했습니다 –
http://code.dblock.org/Source/msiext/1.2/Docs/class_wix_1_1_extensions_1_1_system_tools_1_1_registry_key_copy.html 이 링크는 RegistryKeyCopy가 작동하는 방식을 설명하며 현재 사용 사례는 포함하지 않습니다. 기대하고있다. C# 사용자 지정 작업을 작성하려고합니다. –