2016-09-09 15 views
1

열이있어 설치 프로그램에서 구성 요소로 필요한 파일을 수확하고이를 완벽하게 작동하는 별도의 wxs 파일에 작성합니다. 생성 된 파일의Wix - ICE 64 오류 : 외부 구성 요소 그룹 연결

예 :

<?xml version="1.0" encoding="UTF-8"?> 
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

     <Product Id="*" 
       Name="SETUP TEST 1.0" 
       Language="1031" 
       Version="1.0.0.0" 
       Manufacturer="bla" 
       UpgradeCode="ID"> 

      <Package Id="*" 
        Keywords="Installer" 
        InstallerVersion="300" 
        Compressed="yes" 
        Languages='1031' 
        SummaryCodepage='1252' 
        Manufacturer="bla" 
        Description="Setup" 
        Comments="bla" 
        InstallScope="perMachine"/> 

      <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" /> 

      <Directory Id="TARGETDIR" Name="SourceDir" > 
       <Directory Id="LocalAppDataFolder" > 
        <Directory Id="AppData_dir_ref" Name="Test" /> 

       </Directory> 
      </Directory> 

      <Feature Id="F.Core" Title="bla" Level="1"> 
       <Feature Id="F.Data"> 
        <ComponentGroupRef Id="AppData_ComponentGroupId" /> 
       </Feature> 
      </Feature> 

     </Product> 
    </Wix> 

불행하게도 내가 가진 ICE64 오류 :

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="AppData_dir_ref"> 
      <Directory Id="GUID" Name="C" /> 
      <Directory Id="GUID" Name="OLD" /> 
     </DirectoryRef> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="AppData_ComponentGroupId"> 
      <Component Id="GUID" Directory="GUID" Guid="{GUID}"> 
       <File Id="GUID" KeyPath="yes" Source="$(var.test)\C" /> 
      </Component> ... 

... 등등 .... 이제 난 내 SetupMain에서 사용

모든 구성 요소 및 디렉토리 :

ICE64 오류 : 디 목사관 XX는 사용자 프로필에 있지만 RemoveFile 테이블 ICE64 오류에 나열되지 않은 : XX enter code here은 사용자에게 설치 구성 요소는 ... 그것의 키 경로가 아닌 파일로 HKCU 아래에있는 레지스트리 키를 등록해야합니다 프로필

어떻게 해결할 수 있습니까? 나는 인터넷에서 잠시 동안 수색했지만 힌트를 찾을 수 없었다. 정말 간단하고 기본적으로 내 메인에서 정의하는 것을 잊어 버린 것 같습니다. 필자의 목표는 설치하는 동안 열 명령을 사용하여 파일 빌드에 정의 된 디렉토리 구조를 복사하여 설치 제거시 삭제하는 간단한 설치 프로그램을 작성하는 것입니다.

UPDATE 1 : 작은 업데이트를 내가 RemoveFolder 및 RegistryValue 태그 사용하여 아래의 답변의 도움으로 오류 해결 방법 :

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="AppData_dir_ref"> 
      <Directory Id="dir1" Name="C" /> 
      <Directory Id="dir2" Name="OLD" /> 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="Cg.R"> 
      <Component Id="test" Directory="Data" Guid="..."> 
       <RemoveFolder Id="Data" On="uninstall" Directory="AppData_dir_ref"/> 
       <RemoveFolder Id="Rf.1" On="uninstall" Directory="C"/> 
       <RemoveFolder Id="Rf.2" On="uninstall" Directory="OLD"/> 
       <RegistryValue Root="HKCU" Key="Software\...\..." Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
      </Component> 
     </ComponentGroup>  
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="Cg.D"> 
      <Component Id="cmp5" Directory="dirC23" Guid="..."> 
       <File Id="fil2" Source="Bla\...\...\...xml" /> 
       <RemoveFolder Id="Rf.b" On="uninstall" Directory="dirC23"/> 
       <RegistryValue Root="HKCU" Key="Software\...\..." Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
      </Component> 

... 을 나는 그것의 최선 알고하지는 그렇게하는 방법이지만 지금은 그 일을하는 것입니다. heat.exe 자동화과 함께 사용하면 개선 제안이나 모범 사례가 좋습니다.

ICE91 : 파일 X가 나던이 ALLUSERS 값에 따라 달라 Y 사용자 별 디렉토리에 설치됩니다

마지막 점은 내가 여전히 경고를 가지고있다. 이 파일은 컴퓨터 별 설치가 필요한 경우에도 사용자 프로필에 복사되지 않습니다.

나는이 경고가 무해하다고 읽었습니다. 그러나 어쨌든 미래에 언젠가는 경고를 풀 수있는 이유를 이해하는 것이 좋을 것입니다.

답변

2

이러한 유효성 검사 오류는 모두 사용자 프로필에 설치하거나식이 진행될 때 사용자 별 데이터를 설치하는 것과 관련이 있습니다. 각 사용자의 디스크에 중복 짧은 설치 파일에서 : C : \ 사용자 MyFile.txt라는, C \ 사용자 1 : \ \ \ 사용자 등 MyFile.txt라는 \ 사용자 2 ...

당신이 필요 MSI 유효성 검사를 통과하기 위해 사용자 별 폴더 경로에 설치하는 모든 폴더에 대해 항목을 제거하십시오. 귀하의 경우 이것은 AppData_dir_ref입니다.

마찬가지로 사용자 프로필에 설치하는 구성 요소의 경우 HKCU 레지스트리 키 경로도 설정해야합니다.따라서 C : \ Users \ User1 \ MyPath을 설정하는 대신 키 경로를 HKCU \ Software \ YourCompany \ YourProduct과 같은 것으로 사용자 프로필에 설치하는 구성 요소로 설정하십시오.

<Component Id="RemoveFolder"> 
     <RemoveFolder Id="MyUserProfileFolder" On="uninstall" Directory="AppData_dir_ref"/> 
     Your content here... 
    </Component> 

    ... 

    <Component Id="UserProfile"> 
     <RegistryValue Root="HKCU" Key="SOFTWARE\YOURCOMPANY\YOURPRODUCT" Name="Complete" 
        Value="TestValue" Type="string" KeyPath="yes"/> 
     Your content here... 
    </Component> 
+0

감사 :

여기 윅스 컴파일 테스트하도록 설정해야하지 않지만 대략 당신이 필요로하는 모형입니다. 당신의 대답은 내가 윅스를 처음 접했을 때 도움이됩니다. 아직도 몇 가지 질문이 남았습니다. 사용자 프로필에 설치하고 있는지 어떻게 알 수 있습니까? 설치하는 폴더에 따라 다릅니 까? 그리고 공통 머신 프로파일 (비 사용자 프로파일)에 설치하는 경우 removefolder 및 HKCU 레지스트리 키 경로가 필요하지 않습니까? – Dave

+1

예, 사용자 프로필은 일반적으로 ** C : \ Users ** 계층 구조 아래의 모든 폴더입니다. 여기에 추가하는 모든 폴더에는 고유 한 RemoveFolder 항목이 있어야합니다. 그리고 기계 위치별로 RemoveFolder 항목을 추가 할 필요가 없습니다. –

+0

다시 한 번 감사드립니다. 열을 사용할 때 removefolder 태그와 registryValue 태그를 자동으로 추가 할 수 있습니까? 아니면 모두 자체적으로 수행해야합니까? – Dave