2016-09-09 6 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値に基づいて異なりdoesn'tユーザーごとのディレクトリyにインストールされます

最後の点は、私はまだ警告を持っていることです。このファイルは、マシンごとのインストールが必要な場合でも、ユーザープロファイルごとにコピーされません。

この警告は無害です。しかし、とにかく、いつか将来、いつか警告を解決する理由を理解することはうれしいでしょう。

答えて

2

これらの両方の検証エラーは、ユーザープロファイルへのインストール、または式が進むにつれてのユーザー単位のデータのインストールに関するものです。 C:ユーザー1 \ MyFile.txtを、C \ \ユーザー:ユーザーごとにディスクに複製され、短いインストールファイルでUser2に \ MyFile.txtを\ \ユーザー、等...

あなたのことが必要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

ありがとう:

私はここにウィックスは、コンパイルテストするために設定しているが、いないは大体何が必要のモックアップです。あなたの答えは、私がWixを初めて使ったときに役立ちます。まだいくつかの質問が残っています。ユーザープロファイルにインストールしているかどうかはどうすればわかりますか?それは私がインストールしているフォルダに依存していますか?私は共通のマシンプロファイル(非ユーザープロファイル)にインストールしている場合、removefolderとHKCUレジストリキーパスが必要ですか? – Dave

+1

はい、ユーザープロファイルは、通常、** C:\ Users **階層の下の任意のフォルダです。ここに追加するすべてのフォルダには、独自のRemoveFolderエントリが必要です。また、マシン位置ごとにRemoveFolder項目を追加する必要はありません。 –

+0

もう一度男に感謝します。熱を使用しているときにremovefolderタグとregistryValueタグを自動的に追加する可能性はありますか?それとも、すべて自分自身で行う必要がありますか? – Dave

関連する問題