2011-09-26 5 views
2

WiX가있는 GAC에 몇 가지 타사 어셈블리를 배포하려고합니다. 이 어셈블리 중 일부는 혼합 어셈블리입니다. 이렇게하는 일반적인 방법은 해당 파일의 어셈블리 특성을 "net"로 설정하는 것 같습니다. 그러나, 설치하는 동안 그것을 오류가 그런 식으로 수익률을하고 : 나는 GAC에 어셈블리를 설치하기위한 공급 업체로부터받은어셈블리를 GAC에 설치하는 데 문제가 있습니다.

Error 1938. An error occurred during the installation of assembly ...One or more modules of the assembly could not be found. HRESULT: 0x80131042. assembly interface: IAssemblyCacheItem, function : Commit, component: ... MSI (s) (A8:B0) [12:32:39:085]:.... assembly .... One or more modules of the assembly could not be found. HRESULT: 0x80131042. assembly interface: IAssemblyCacheItem, function: Commit, component:... 

지침입니다 :

  1. 장소 모든 DLL을 (D1, d2, d3, ..., dn)을 동일한 디렉토리에 저장합니다.
  2. 이러한 dll의 하위 집합에서 gacutil을 실행하십시오. 나는 GAC에서 "원시"를 살펴 경우

는 폴더의 내용 중 하나는 다음과 같습니다

gac_32 \ D1 \ 0.0.0.0_271E3736135E91A2 \ d1.dll gac_32 \ D1 \ 0.0. 0.0_271E3736135E91A2 \ d2.dll gac_32 \ D1 \ 0.0.0.0_271E3736135E91A2 \ d3.dll

gacutil은 d2.dll d3.dll이 d1.dll과 같은 디렉토리에 위치해야하고보기 자동이 있다는 것을 발견했다 그렇게 했어.

어떻게하면 wix로이 작업을 수행 할 수 있습니까? 지금 내가 볼 수있는 유일한 방법은 gacutil을 사용자 지정 작업으로 호출하는 것입니다. 그러나 이것은 좋은 해결책처럼 보이지 않습니다.

이 경우 다른 사람이 당신에게 스테판

답변

4

감사하면이 고민된다

최대 하나의 관리되는 어셈블리와 하나가 참조하는 더 네이티브 또는 혼합 DLL을 제조 된 다중 파일 어셈블리를 설치하려면 관리되는 조립, 당신의 WixSetup에 다음과 같은 구조를 만들 :

<Component Id="MyMultifileAssembly" Guid="abc"> 
     <File Id="ManagedAssembly" KeyPath="yes" Source="$(var.ThirdParty)\Managed.dll" Assembly=".net"/> 
     <File Id="UnmanagedAssembly1" KeyPath="no" Source="$(var.ThirdParty)\Unmanaged1.dll" /> 
     <File Id="UnmanagedAssembly2" KeyPath="no" Source="$(var.ThirdParty)\Unmanaged2.dll" /> 
</Component> 

모두 관리되지 않는 어셈블리 관리 DLL이에 설치되어있는 GAC 폴더로 이동합니다.

관련 문제