2012-11-15 35 views
5

さて、明らかに何か不足しています。私はthisに従ってGACにインストールし、開発用に利用しようとしています。しかし、唯一起こっているのは、DLLがProductDirectoryにドロップされていることだけです。これはGACには表示されず、レジストリキーも追加されません。これをどのように機能させることができますか?GACにインストールしてレジストリに登録

下記のProduct.wxsの関連部分。

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="Me.Common" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="ea52947a-0980-435d-a8f5-280d3526cb90"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 
    <!-- The feature to install. --> 
     <Feature Id="ProductFeature" Title="Me.Common" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
     <Directory Id="ProductDirectory" Name="Me.Common"> 
      <Directory Id="GAC" Name="GAC" /> 
     </Directory> 
      </Directory> 
     </Directory> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="ProductComponents"> 
     <Component Id="RunTime_Me.Common" Directory="GAC" Guid="E2B19C22-DC01-432D-85B0-0E4948F95A43"> 
     <!-- Add to GAC. --> 
     <File Id="RunTime_Me.Common" 
       Source="$(var.Me.Common.TargetDir)$(var.Me.Common.TargetFileName)" 
       Assembly=".net" 
       KeyPath="yes" /> 
     </Component> 
     <Component Id="DesignTime_Me.Common" Directory="ProductDirectory" Guid="C1BD8CD1-E834-49D5-B499-D9E313E70669"> 
     <!-- Add locally. --> 
     <File Id="DesignTime_Me.Common" 
       Source="$(var.Me.Common.TargetDir)$(var.Me.Common.TargetFileName)" 
       KeyPath="yes" /> 
     <!-- Add to registry so that Visual Studio can find it via Add Reference. --> 
     <Registry Id="Registry_DesignTime_Me.Common_AssemblyFolders" 
        Root="HKLM" 
        Key="SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\[ProductName]" 
        Value="[$DesignTime_Me.Common]" 
        Type="string" /> 
     </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

それは既にGACにインストールしましたが判明しました。私は間違った場所を探していた。 .NETに4.0のアイテム(C:\ Windows \ Microsoft.NET \ assembly)用の2番目のGACが追加されました。レジストリキーが残されます。私はRegistryが廃止されていることを警告を得ていたので、私は以下で、そのコンポーネントを交換し、まだ動作していない:

<Component Id="DesignTime_Me.Common" Directory="ProductDirectory" Guid="C1BD8CD1-E834-49D5-B499-D9E313E70669"> 
    <!-- Add locally. --> 
    <File Id="DesignTime_Me.Common" 
      Source="$(var.Me.Common.TargetDir)$(var.Me.Common.TargetFileName)" 
      KeyPath="yes" /> 
    <!-- Add to registry so that Visual Studio can find it via Add Reference. 
     These require .NET v4.0 minimum. --> 
    <RegistryKey Root="HKLM" 
       Key="SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\[ProductName]"> 
     <RegistryValue Type="string" Value="[$DesignTime_Me.Common]" /> 
    </RegistryKey> 
    </Component> 
</ComponentGroup> 

答えて

4

すべて機能しています。私はちょうど間違った場所を探していた。

4.0GACはC:\Windows\Microsoft.NET\assemblyです。 インストーラが32ビットであるため、レジストリキーはSOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\[ProductName]に配置されています。

1

あなたのファイルの少なくとも一方がapeparingされているので、私はあなたが昇格実行されていないことを推測します。 InstallPrivileges = "elevated"をパッケージ要素に追加してみてください。

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" /> 
+0

すべてのインストーラの管理者権限がデフォルトで得られませんか?明示的なInstallPrivilegesでテストをしましょう。 – zimdanen

+0

私の質問を編集しました。すでにGACが働いていたことが判明 - 4.0 GACの代わりに2.0〜3.5 GACを探していた。しかし、レジストリキーは動作しておらず、 'InstallPrivileges'を使用しても修正されません。 – zimdanen

+2

これは完成したので私の自身の答えを掲示しましたが、奨励金を授与されました。 – zimdanen

関連する問題