2009-04-02 4 views
14

나는 특정 레지스트리 값은 설치 후 존재 함을 주장 할, 그래서 나는 다음과 같은 구성 요소를 추가 :WiX : 제거시 레지스트리 값이 제거되는 것을 방지하려면 어떻게해야합니까?

<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes"> 
    <RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt"> 
     <RegistryValue Type="string" Value="openDocument.WriterDocument.1" /> 
    </RegistryKey> 
</Component> 

키/값이 이미 설치 전에 설정되어있을 수 있습니다. 그러나 값을 내 특정 값으로 설정해야합니다. 즉, 내 값으로 덮어 쓰게됩니다.

제 제품을 제거하면이 값은 항상입니다. 그러나 설치자가 값을 추가 한 경우에만 값을 제거하고 싶습니다. 설치 관리자가 방금 값을 수정 한 경우 이전 값을 복원해야합니다 (가능하지 않으면 내 값을 그대로 유지해야 함).

제거시 키 자체가 제거되지 않으므로주의하십시오. 이것은 RegistryKey 요소에 Action="create"을 지정했기 때문에 올바르게 작동하는 것 같습니다.

RegistryValue과 비슷한 설정이 있는데 값을 만들지 만 설치시 제거하지 않을 수 있습니까?

업데이트 : HKCR의 두 레지스트리 키는 모두 컴퓨터 전체에 적용됩니다. 즉, 레지스트리의 HKLM \ SOFTWARE \ Classes 지점에서 시작됩니다.

답변

23

속성을 사용하여 레지스트리 항목이없는 경우에만 구성 요소가 설치되도록 할 수 있습니다. Component element. NeverOverwrite에 대한 윅스 문서에서 :이 속성에 '예'는 설치 프로그램이 설치되지 않거나 구성 요소를 다시 설정하면

경우 주요 경로 파일이나 구성 요소에 대한 키 경로 레지스트리 항목 이미 존재 함.

는 또한 레지스트리 항목이 구성 요소 키 경로라고는 모호하게 yesRegistry 요소에 KeyPath 속성을 설정해야 할 수도 있습니다.

레지스트리 값을 이미 존재하지만 제거하려고 할 때 레지스트리 값을 제거하려는 경우 구성 요소 요소의 Permanent 특성을 대신 사용할 수 있습니다.

+0

감사합니다. 매우 도움이됩니다. 이것을 체크해 보도록하겠습니다 :-) –

+1

+1 KeyPath 코멘트! –

관련 문제