2012-11-15 17 views
5

Tamam, bir şeylerin eksik olduğunu görüyorum. GAC'a yüklemek ve ayrıca geliştirme için kullanıma sunmak için this'u takip etmeye çalışıyorum. Ancak, gerçekleşen tek şey, DLL'nin ProductDirectory öğesine bırakılmasıdır. GAC'de görünmüyor, eklenecek kayıt defteri anahtarı da yok. Bunu nasıl çalıştırabilirim?GAC'a yükleyin ve kayıt defterine kaydolun

Ürünün ilgili kısımları aşağıdan.

<?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> 

zaten GAC yükleme olduğunu kapatır. Yanlış yere bakıyordum; .NET şimdi 4.0 ürün için ikinci bir GAC (C: \ Windows \ Microsoft.NET \ assembly) var. Bu kayıt defteri anahtarını bırakır. Ben Registry kullanımdan kaldırıldı belirten bir uyarı başlamıştı, bu yüzden aşağıda o bileşeni değiştirilir, ama yine de çalışmıyorsa:

<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> 

cevap

4

Tüm çalışma var; Sadece yanlış yerlere bakıyordum.

4.0 GAC, C:\Windows\Microsoft.NET\assembly adresindedir. Yükleyici anahtarı 32 bit olduğundan, kayıt defteri anahtarı SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\[ProductName] içine yerleştiriliyor.

1

apeparing olan dosyaların en az biri beri, sana yükseltilmiş yayınlanmadığını tahmin ediyorum . Paket öğenize InstallPrivileges = "yükseltilmiş" eklemeyi deneyin.

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

Tüm yükleyiciler için varsayılan olarak yönetici izinleri almıyor mu? Açık olan InstallPrivileges ile test yapmama izin ver. – zimdanen

+0

Sorumu düzenledim. GAC zaten çalışıyordu - 4.0 GAC yerine 2.0-3.5 GAC'de bakıyordu. Ancak, kayıt defteri anahtarı çalışmıyor ve 'InstallPrivileges' kullanmak bunu düzeltmiyor. – zimdanen

+2

Kendi cevabımı gönderdim, ancak bu tamamlandığından size ödül verdim ve bana bakmak için geri döndün. – zimdanen

İlgili konular