2014-09-09 9 views
0

우리는 PowerShell 버전 3.0이 작동하는 데 필요한 PowerShell 스냅인이 있습니다. 그래서 우리는 윅스 (3.8) 파일에 다음 파일 요소를 사용 :이 스냅인을 설치할 때Wix의 버그? ps : SnapIn이 PowerShell 3.0에서 잘못된 레지스트리 키를 쓰고 있습니까?

 <File Id="MySnapin.dll" 
       Name="MySnapin.dll" 
       Assembly=".net" 
       KeyPath="yes" 
       Vital="no" 
       Checksum="yes" 
       DiskId="1" 
       Source="$(var.FilesPath)\Bin\MySnapin.dll" 
       AssemblyApplication="MySnapin.dll"> 
      <ps:SnapIn Id="MySnapin" 
         Description="This is a PowerShell snap-in" 
         Vendor="My Company Inc." 
         RequiredPowerShellVersion="3.0"> 
       <ps:FormatsFile FileId="MySnapin.format.ps1xml" /> 
      </ps:SnapIn> 
     </File> 

은 그러나, 파워 쉘 (은 Get-PSSnapIn -registered)에서 찾을 수 없습니다. 레지스트리를 검사 할 때 스냅인이 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\3\PowerShellSnapIns\MySnapin에 등록되어있는 것으로 나타났습니다. 그러나 DLL에 installutil.exe를 실행하면 등록은 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\PowerShellSnapIns\MySnapin으로 끝나며 powershell은 올바르게 찾습니다. 이 버그는 WiX Toolset의 버그입니까? 아니면 여기서 뭔가 잘못하고 있습니까?

등록은 실제로 어디로 가고 있습니까?

+1

소리가 버그 일 수는 있지만 모듈을 통해 스냅인을 사용하는 이유가 무엇입니까? 스냅인은 일반적으로 이전 버전의 PowerShell을 지원해야하는 경우에만 사용됩니다. –

+0

SnapIn을 사용하는 이유는 매우 간단합니다. 최근까지만 cmdlet 용 모듈을 사용할 가능성을 알지 못했습니다. 모듈로 전환하는 대신이 문제를 해결하는 좋은 방법 인 것 같습니다. – DeCaf

답변

2

그래, 이건 버그 같아서, WiX 메인테이너에게보고하고 싶을 지 모르지만, 더 좋은 방법이 있습니다.

cmdlet 및 기능을 추가하는 가장 좋은 방법은 PowerShell 모듈을 사용하는 것입니다. 스냅인은 이전 방법으로 PowerShell을 확장하고 여전히 지원되는 동안 권장되지 않습니다. 이전 버전의 PowerShell에 cmdlet을 추가 할 필요가없는 경우 모듈을 사용하십시오.

모듈은 스냅인보다 배포하기가 다소 편합니다. 기본적으로 어디서나 배치 할 수 있지만 사용자가 이름을로드 할 수있게하려면 PSModulePath 환경 변수에 있어야합니다. 설치 관리자가 파일을 추가하고 PSModulePath 변수를 업데이트하여 설치 폴더의 Modules 폴더를 포함시킵니다. 그러면 사용자는 Import-Module MyModule으로 전화를 걸 수 있습니다. 또한 PSModulePath의 documentation을 참조하십시오.

This 블로그 게시물에는 WiX 설치 프로그램을 작성하는 방법에 대한 자세한 설명이 나와 있습니다. 또한 필요한 PowerShell 버전이 설치되었는지 확인하는 방법에 대한 지침도 제공합니다. 기본적으로 PowerShellEngine \ PowerShellVersion 값에 대해 언급 한 두 레지스트리 키 아래를 확인합니다.

+0

정보를 제공해 주셔서 감사합니다. 실제로 모듈은 SnapIns보다 훨씬 사용하기 쉽기 때문에 대신이 솔루션을 사용하도록 솔루션을 변환 할 것입니다. 그럼에도 불구하고 버그 보고서를 WiX 팀에 제출합니다. – DeCaf