더 이상 작동하지 않는 것을 발견했을 때 설치에 새 기능을 추가하고있었습니다.설치 제거시 Wix 설치 프로그램이 파일을 제거하지 않음
구성 요소 즉, 응용 프로그램 폴더에 설치된 activex와 다른 폴더에 설치된 다양한 dll로 구성되는 선택적 기능이 있지만 프로그램을 제거 할 때 응용 프로그램의 폴더에 남아있는 유일한 파일이며 필터도 남아 있습니다 그들의 별도의 폴더에.
이것은 ActiveX와 dll을 모두 제거하는 데 사용되며 제거가 끝날 때 두 폴더를 모두 삭제합니다.
비슷한 기사에 제안되었지만 아무 소용이없는 것처럼 ActiveX (열을 가진 .wxs 파일을 다시 생성 함)와 모든 DLL의 이름을 바꾸는 데 몇 시간을 보냈습니다!
나는 그것을 얻지 못했고, 내 응용 프로그램이 제거되고, 내 Windows 서비스가 중지되고 등등 ...하지만 activex 및 이러한 dll은 그냥 삭제되지 않습니다!
문제가있는 파일의 동작이 null로 설정되어 있습니다. 기능 부분에서 activex와 dll을 연결하는 것은 null이지만 다른 2는 괜찮습니다!
MSI (s) (C4:C0) [04:01:07:040]: Doing action: InstallValidate
MSI (s) (C4:C0) [04:01:07:040]: Note: 1: 2205 2: 3: ActionText
Action ended 04:01:07: KillAgentMonitor. Return value 1.
Action start 04:01:07: InstallValidate.
MSI (s) (C4:C0) [04:01:07:040]: PROPERTY CHANGE: Deleting
MsiRestartManagerSessionKey property. Its current value
is '86b17c5ff2f8de4d9424198f445cc8d1'.
MSI (s) (C4:C0) [04:01:07:040]: Feature: Feature2; Installed: Absent;
Request: Null; Action: Null
MSI (s) (C4:C0) [04:01:07:040]: Feature: Feature3; Installed: Local;
Request: Absent; Action: Absent
MSI (s) (C4:C0) [04:01:07:040]: Feature: Feature1; Installed:
Local; Request: Absent; Action: Absent
다음을 삭제할 파일 :
다음MSI (s) (C4:C0) [04:01:07:040]: Component: CMP_File1;
Installed: Local; Request: Absent; Action: Absent
MSI (s) (C4:C0) [04:01:07:040]: Component: CMP_File2;
Installed: Local; Request: Absent; Action: Absent
는 DLL 파일 :
MSI (s) (C4:C0) [04:01:07:056]: Component: CMP_File53_DLL; Installed:
Local; Request: Null; Action: Null
MSI (s) (C4:C0) [04:01:07:056]: Component: CMP_File54_DLL; Installed:
Local; Request: Null; Action: Null
MSI (s) (C4:C0) [04:01:07:056]: Component: CMP_File55_DLL; Installed:
Local; Request: Null; Action: Null
당신이 작업이 모두 널 (null)입니다 볼 수 있듯이 ??
그리고 마지막으로 액티브 :
MSI (s) (C4:C0) [04:01:07:056]: Component: CMP_MyActiveX_DLL; Installed:
Local; Request: Null; Action: Null
또한 널!
내 액티브 X는 C에 설치 : \ 프로그램 파일 (86) \ mycompany \ 클라이언트와 DLL은 C에 설치됩니다 나는 또한 일부 기사를 읽을 \ WINDOWS
\ 그 이유 중 하나는이 문제 수도 구성 요소가 레지스트리에 정보를 남겼을 수 있지만 여러 가지 특정 임의의 GUID를 확인했지만 아무 것도 찾을 수없는 경우가 발생합니다.
다른 기사에 대한 언급은 dll에 대한 참조 횟수 때문일 수 있으며 이러한 것은 SharedDlls 레지스트리이지만 다시는 그렇지 않을 수도 있습니다. 나는 점검했고 아무것도 레지스트리에 없었다.
또한 VM을 지우고 신선한 것을 다시 작성했지만 여전히 좋지는 않습니다.
저는 다음에 할 수있는 것에 관해서는 완전히 아이디어가 없습니다. 액션이 null 인 이유에 대한 다른 제안 사항이 있습니까?
내 로그에서 특정 항목을 찾고 싶습니까?
감사합니다.
UPDATE는
나는 결국이 문제의 원인을 알아 냈어. 잘못된 GUID, 높은 버전, 참조 횟수, Windows 폴더에있는 등의 제안 된 문제와 관련이 없습니다.
기본적으로 모든 클라이언트에 제공되지 않는 명령 줄 매개 변수 (예 : INCLUDEFILTERS = 1)가 제공되는 경우 내 기능 중 하나가 기능 트리보기에만 표시됩니다.
코드는 : 명령 라인을 통해 제공
1. 이제,이 문제와 관련되는 것으로 보인다 설정하지 않는 기본 INCLUDEFILTERS 바이
<Feature Id="Feature2" Title="Filters" Level="10" Description="Select
this option to install optional filters" TypicalDefault="install"
InstallDefault="local">
<ComponentGroupRef Id="Feature2Components"/>
<!--<Condition Level="0">
<![CDATA[(INCLUDEFILTERS = 0)]]>
</Condition>-->
</Feature>
0이다. 테스트를 진행할 때 INCLUDEFILTERS = 1을 사용하여 액티브 X와 필터를 설치하지만 제거를 호출하면 해당 값을 인식하지 못하고 기본값 0을 사용하므로 아무것도 수행하지 않습니다.
위의 내용을 바탕으로 제거 할 때 어떻게 든 기능 트리를보고 그것이 선택되었는지 여부를 확인해야합니다.
설치시 INCLUDEFILTERS가 1로 설정되었음을 감지하고 제거 할 때 내부 변수를 1로 재설정 할 수 있습니까? CDATA 내에서 'Installed'를 사용해야합니까, 아니면이를 수행 할 수있는 다른 방법이 있습니까?
솔직히 말해서 나는이 값을 알고 있으면 차이를 만들지 모르겠지만 지금은 그렇게 할 것이라고 확신합니다.
CDATA에서 'Installed'조건을 시도해보고 대답을 업데이트하겠습니다.
감사합니다.
이 목록을 점검 했습니까? http://blogs.msdn.com/b/rflaming/archive/2005/07/07/439810.aspx 또한 귀하의 가이드에 대한 "{guid} 제거 제거"를 찾으십시오. – PhilDW
안녕하세요, 모든 링크가이 블로그에서 죽었지 만 문제는 잘 부분적으로 파악됩니다! 나는 Bob의 대답에서 설명 할 것이다. – Thierry
링크가 오래되었을 수도 있지만 확실히 "해당 구성 요소에 false로 평가되는 조건이 있습니다." 다소 관련이있는 것 같습니다 :) – PhilDW