У нас есть Snapin PowerShell, для которого требуется версия 3.0 PowerShell. Таким образом, мы использовали следующий элемент файла в файле WiX (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>
Однако при установке этого оснастку не может быть найден в PowerShell (Get-PSSnapIn -registered). При рассмотрении реестра выясняется, что snapin зарегистрирован в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\3\PowerShellSnapIns\MySnapin
. Но при запуске installutil.exe в DLL регистрация заканчивается на HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\PowerShellSnapIns\MySnapin
, и powershell находит ее правильно. Это ошибка в WiX Toolset, или я делаю что-то неправильно здесь?
Где действительно должны регистрироваться регистрации?
Похоже, что это может быть ошибка, но есть ли причина, по которой вы используете оснастку над модулем? Snap-ins обычно используются только сейчас, когда вам нужно поддерживать более старые версии PowerShell. –
Причина использования SnapIn очень проста; Я не знал о возможности использовать модули для командлетов до недавнего времени. Переключение на модуль вместо этого кажется хорошим обходным решением для этой проблемы. – DeCaf