2017-02-08 2 views
1

안녕하세요, 제거시 요소를 제거하기 위해 Wix 설치 프로그램을 가져 오는 데 문제가 있습니다. 문제가있는 폴더와 파일은 회사 지정 프로그램 데이터 폴더 'D : \ programdata'에 있습니다. 폴더 생성은 OK이지만 제거시 제거되지 않습니다.ProgramData 폴더에서 제거 할 때 파일 및 폴더를 제거하는 방법

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="CommonAppDataFolder" Name="CommonAppData" > 
    <Directory Id="dirCompanyAppData" Name="Company Name"> 
     <Directory Id="dirAppNameAppData" Name="AppName"> 
     <Component Id="cmpDirCommonAppData" Guid="{F808944A-D898-43F3-BA1D-A35A3FD7DF41}" KeyPath="yes"> 
      <CreateFolder Directory="dirAppNameAppData" /> 
      <RemoveFile Id="PurgeAppName" Name="*.*" On="uninstall" /> 
      <RemoveFolder Id="idDirAppNameAppData" On="uninstall" Directory="dirAppNameAppData" /> 
     </Component> 
     </Directory> 
     <Component Id="cmpDirCompanyName" Guid="{A1E7E75A-D582-40C5-BD6B-D36BFB11795E}" KeyPath="yes"> 
     <RemoveFile Id="PurgeCompanyName" Name="*.*" On="uninstall" /> 
     <RemoveFolder Id="idDirCompanName" On="uninstall" Directory="dirCompanyNameAppData" /> 
     </Component>   
    </Directory> 
    </Directory> 
    <Directory Id="ProgramFilesFolder"> 
    ... etc 

주 회사와 응용 프로그램을 식별 요소 코드에서 대체되었습니다 : 다음은 product.wxs 파일의 관련 섹션에서 발췌 한 것입니다

D:\programdata 
     Company Name 
     App Name 
      Logs 
      QueryOutput 

을 다음과 같이 폴더 구조입니다. 간략하게 wxs 파일의 나머지 부분을 생략했습니다. 관련 코드가이 추출물에 포함되어 있다고 생각하기 때문입니다. 어떤 도움을 주셔서 감사합니다.

친절 감사는 RemoveFolder 정의에서 폴 J.

답변

0

: 부모 구성 요소를 설치 또는 제거를 선택한 경우

빈 폴더를 제거합니다.

경우에 따라 AppData 폴더에는 사용자 지정 구성이있을 수 있습니다.

모든 구성 요소 계획이 먼저 수행 된 다음 실행됩니다. 그래서 RemoveFile은 제거 할 폴더의 모든 파일을 계획 할 것이고 RemoveFolder는 폴더를 삭제하지 말아야한다고 결정할 것입니다. 왜냐하면 계획 할 때 폴더에 여전히 내용이 들어 있기 때문입니다. 설치 부분에 포함 된 구성 요소 따라서 비어 있지 않습니다.

util:RemoveFolderEx을 사용해야합니다. 다시 이것을 사용하는 또 다른주의 사항이 있습니다.

Windows Installer의 파일 비용에 큰 영향을 줄 수 있으므로 임시 행을 CostInitialize 표준 작업 전에 작성해야합니다. 불행히도 MSI는 나중에 CostFinalize 작업에서 패키지의 디렉터리 계층 구조에 대한 속성을 만들지 않습니다.

그래서 당신은 수동으로 아마 난 그냥 CostInitialize 전에 예정되어 생각 WixRemoveFoldersEx의 행동 이전에 레지스트리에서 읽어 속성의 기반으로 디렉토리를 설정해야합니다.

관련 문제