2014-03-26 10 views
0

install.And에서 레지스트리 키 값을 레지스트리에 추가했습니다. 제거시 레지스트리 키 값을 수정하고 싶지만 레지스트리에서 제거하지 않으려합니다.wix의 레지스트리에서 키를 제거하지 않고 레지스트리 키 값을 수정하는 방법은 무엇입니까?

1) 레지스트리 값을 수정하기 위해 제거시 사용자 지정 작업 실행을 시도했습니다. 그러나 레지스트리 값은 제거시 레지스트리에서 제거됩니다.

2) 구성 요소를 영구적으로 만들면 제거 할 때 키 값이 수정되지 않습니다.

<Component Id="SampleRegComp" 
     Guid="3865FE52-F8EE-4E29-B321-BDF0FD6D3F58" 
      Permanent="yes"> 
    <RegistryKey Action="create" 
     Key="SOFTWARE\Microsoft\Notepad" 
     Root="HKCU"> 
     <RegistryValue Name="StatusBar" Type="integer" Value="1" /> 
    </RegistryKey> 

    </Component> 

<CustomAction 
Id="ModifyOutlookRegInitSign_12" 
Return="ignore" 
Directory="TARGETDIR" 
ExeCommand= "&quot;[SystemFolder]reg.exe&quot; ADD &quot;HKCU\SOFTWARE\Microsoft\Notepad&quot; /v StatusBar /t integer /d 0 /f" > 
</CustomAction> 

가 설치 짧은 대답은 당신의 코드를 사용하여 레지스트리 항목을 생성하여 코드를 수정하는 것입니다

답변

0

, 그것은 당신이 그 항목을 관리하는 것이 분명 둘 다 당신과 MSI 설치 .

대체 구성 요소를 null 구성 요소 GUID와 함께 구성 요소에 넣으면 MSI가 설치 한 후 구성 요소를 전혀 관리하지 않습니다.

+0

null component guid를 배치했으나 uninstall.a 사용자 정의 조치에서 레지스트리 키 'StatusBar'값이 여전히 '1'인 경우 uninstall.but시이를 '0'으로 변경하려고합니다. 그러나 수정하지 않았습니다. . – 123r789

+0

예 내가 한 짓을 실수로 찾았습니다. 사용자 지정 액션에서 REG_DWORD 대신 정수로 형식을 배치했습니다. – 123r789

0

Phil이 이미 대답했지만 제거 중에 실행될 사용자 지정 작업에 대해서는 (REMOVE = "ALL"및 UPGRADINGPRODUCTCODE)를 사용할 수 있다고 덧붙일 수 있습니다. 그런 다음 레지스트리 구성 요소를 영구적으로 설정하십시오 (HKCU 레지스트리 데이터는 실제로 제거되지 않아야 함 - 일부 논쟁의 문제). 그래도 제거 할 때 로그온하지 않은 사용자의 HKCU 데이터는 수정되지 않습니다. 이것은 ActiveSetup으로 할 수있는 훨씬 더 복잡한 작업입니다.

NOT UPGRADINGPRODUCTCODE를 추가하면 주요 업그레이드의 일부로 수행 된 제거가 제품을 다시 설치해야하므로 레지스트리가 업데이트되지 않습니다. 귀하의 경우에는 필요하지 않지만 사용자 지정 작업이 불필요하게 실행되지 않도록하십시오.

InstallExecuteSequence에서 InstallFinalize 전에 사용자 지정 작업을 바로 예약하는 것이 좋습니다. 이 위치를 테스트하지는 않았지만 제거 중에 실행될 마지막 작업 중 하나이며 원하는 효과를 가져야합니다.

this thread의 아래쪽에 다른 설치 모드를 검색하기위한 조건 목록을 참조하십시오.