Ok, ovviamente mi manca qualcosa. Sto cercando di seguire this per installare su GAC e renderlo disponibile per lo sviluppo. Tuttavia, l'unica cosa che sta accadendo è che la DLL viene rilasciata in ProductDirectory. Non appare nel GAC, né viene aggiunta la chiave di registro. Come posso farlo funzionare?Installa su GAC e registrati nel registro
Parti rilevanti di Product.wxs di seguito.
<?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>
Abbiamo scoperto che era già installando nel GAC. Stavo cercando nel posto sbagliato; .NET ora ha un secondo GAC per 4.0 elementi (C: \ Windows \ Microsoft.NET \ assembly). Questo lascia la chiave di registro. Mi è stato sempre un avvertimento che Registry
è deprecato, quindi ho sostituito quel componente con il seguito, ma ancora non funziona:
<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>
Non ottiene le autorizzazioni amministrative per impostazione predefinita per tutti gli installer? Lasciami andare a testare con l'esplicito InstallPrivileges. – zimdanen
Modificato la mia domanda. Si è scoperto che GAC stava già lavorando, stava esaminando il GAC 2.0-3.5 invece del 4.0 GAC. Tuttavia, la chiave di registro non funziona e l'uso di 'InstallPrivileges' non lo aggiusta. – zimdanen
Ho scritto la mia risposta, ma ti ho assegnato la taglia da quando è stata completata e mi hai riportato a guardarla. – zimdanen