5

わかりました、明らかに何かが欠けています。GACにインストールし、開発にも利用できるようにするために、これに従おうとしています。ただし、発生しているのは、DLL が ProductDirectory にドロップされていることだけです。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 アイテム用の 2 つ目の GAC (C:\Windows\Microsoft.NET\assembly) が追加されました。これにより、レジストリ キーが残ります。非推奨の警告が表示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

2 に答える 2

4

それはすべて機能しています。私はただ間違った場所を見ていました。

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

于 2012-11-21T15:51:01.760 に答える
1

少なくとも1つのファイルが分離しているので、昇格して実行されていないと思います。パッケージ要素にInstallPrivileges="elevated"を追加してみてください。

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
于 2012-11-21T14:32:48.137 に答える