2012-11-15 2 views
5

그래, 분명히 뭔가 빠졌어. GAC에 설치하고 개발할 수 있도록하기 위해 this을 따르려고합니다. 그러나, 유일한 일은 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)의 두 번째 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.0 GAC는 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

관련 문제