이동합니다
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders
이 하위 키를 추가 (중요하지 않습니다 이름있는, 그러나뿐만 아니라 설명이 될 수 있음), 그 디폴트 값은 폴더 당신의 어셈블리를 포함하는 것입니다 너는 잘 가야한다. 윅스
를 사용하여 필요한 키를 추가하는 방법
이것은 필요한 키를 생성하고 어셈블리를 설치 한 폴더에 기본 값을 설정하기위한 윅스 코드의 제거 다운 조각. 이것은 완전한 WiX 설치 프로그램이 아니며 직접 붙여 넣을 수 없습니다. Guid 속성을 제거했으며 디렉토리, 구성 요소 및 기능 선언 만 표시했습니다. 당신은 전체 윅스 스크립트를 가지고 일단 당신이 어떤 완전한 윅스 코드는 이러한 비트를 병합하는 방법을 합리적으로 명확해야 본 적이되면. <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!-- Path from WiX file to the DLL(s) you're installing -->
<?define BuildPath="..\Bin\Release" ?>
<!-- The base key path - note no HKLM -->
<?define AssemblyFolders = "Software\Microsoft\.NETFramework\AssemblyFolders" ?>
<Product>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="CompanyFolder" Name="YourCompany">
<Directory Id="INSTALLLOCATION" Name="Your Product">
<!-- Id="AssemblyFolder" captures the location where the DLL gets installed -->
<Directory Id="AssemblyFolder" Name="Bin">
<Component Id="AssemblyComponent">
<!-- This is the bit that copies the assembly file -->
<File Id="YourDll.dll" Checksum="yes" Source="$(var.BuildPath)YourDll.dll" />
</Component>
<Component Id="ControlRegistrationComponent">
<!-- This is the bit that creates the registry key -->
<RegistryKey Action="createAndRemoveOnUninstall" Root="HKLM" Key="$(var.AssemblyFolders)\Your Product Name">
<!-- Square brackets result in a reference -- so the install folder gets picked up -->
<RegistryValue Action="write" Value="[AssemblyFolder]" Type="string" />
</RegistryKey>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="PRODUCTROOTFEATURE">
<!-- This causes the assembly to be installed -->
<ComponentRef Id="AssemblyComponent" />
<!-- This causes the registry key to be created -->
<ComponentRef Id="ControlRegistrationComponent" />
</Feature>
</Product>
</Wix>
, 당신은 배치 파일을 사용할 수 있으며, MSI를 빌드하려면
candle.exe "%WXS_NAME%.wxs" -out "%WXS_NAME%.wixobj"
light.exe "%WXS_NAME%.wixobj" -out "%WXS_NAME%.msi"
여기서 % WXS_NAME %은 WiX .wxs 소스 파일의 이름입니다.
(아마도 이것은 다소 수수께끼 같지만 (a) 시작하기 쉽도록 WiX 샘플, 튜토리얼 및 참고 자료가 많이 있으며 (b) Visual Studio 용 봉헌 애드 인이 어쨌든 일부 내장재에서).
MSI를 자동으로 빌드하려면 Votive 추가 기능 (WiX의 일부) 또는 빌드 후 단계 또는 MSBuild 빌드 스크립트를 사용하십시오. 빌드 스크립트를 사용하는 이유는 자동화 된 빌드의 일부로 MSI를 빌드하기를 원하기 때문입니다. 빌드 후 단계에서 수행하면 개발 빌드가 느려지므로 마일리지가 다를 수 있습니다.
대상 컴퓨터에서 레지스트리를 편집하고 Microsoft, .NETFramework 및 AssemblyFolders를 HKEY_LOCAL_MACHINE \ SOFTWARE에 추가 한 다음 설치 위치가 하드 코드 된 문자열을 추가했습니다 (환경 변수를 사용해야 함). 그러나 여전히 작동하지 않습니다. DLL이 참조 추가에 표시되지 않습니다. 내가 뭘 잘못하고 있는거야? –
AssemblyFolders 아래에 * (regedit, 폴더에) 키를 만들고 * 하위 키 *의 기본값을 설정해야한다는 것을 잊지 마십시오. 예제를 보려면 컴퓨터의 레지스트리를 살펴보십시오. 그리고 당신이 기본 키를 만들어야한다는 것에 조금 놀랐습니다 - 이미 거기에 있어야합니다 (특히'HKLM \ SOFTWARE \ Microsoft'!). 이 방법을 잘못 사용하지 마십시오. 올바른 장소에 키를 추가 하시겠습니까? – itowlson
참조 추가 대화 상자에 기여하는 또 다른 위치는'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v2.0.50727 \ AssemblyFoldersEx'입니다. – itowlson