Тихое выполнение сценария PowerShell из WiX Зависает PowerShell

Примечание: этот вопрос также размещен в списке рассылки пользователей WiX .

Я пытаюсь незаметно выполнить сценарий PowerShell из MSI, созданного WiX. Тем не мение, каждый раз, когда я запускаю программу установки, PowerShell зависает. Интересно, что, согласно журналам установщика, сценарий PowerShell запускается успешно. Кроме того, если я завершаю процесс PowerShell через диспетчер задач, установщик отменяет установку и откатывает все изменения.

PowerShell Script Contents

# @param website The website under which the module should be compiled and registered.
# @param name The name of the module to be registered.
# @param assembly The assembly name, version, culture and public key token to be compiled.
# @param assemblyType The fully qualified assemebly type to be registered.

param([string]$website = "website", [string]$name = "name", [string]$assembly = "assembly", [string]$assemblyType= "assemblyType")

import-module webadministration
add-webconfiguration /system.web/compilation/assemblies "IIS:\sites\$website" -Value @{assembly="$assembly"}
new-webmanagedmodule -Name "$name" -Type "$assemblyType" -PSPath "IIS:\sites\$website"

WiX Custom Action Contents: Attempt 1

Моя первая попытка заключалась в использовании специальный символ & для выполнения сценария.






   NOT  Installed
   NOT Installed

WiX Custom Action Contents: Попытка 2

Моя вторая попытка заключалась в использовании аргумента -File для выполнения сценария.






   NOT  Installed
   NOT Installed

Оба подхода, похоже, работают, поскольку они вносят изменения в желаемый файл web.config, однако, оба подхода вешают PowerShell и, следовательно, установщик.

Дополнительная информация

Я изменил сценарий PowerShell, чтобы распечатать информацию о версии и не выполнять никаких других действий. Затем в файлах журнала MSI отображается следующее:

MSI (s) (D4:78) [10:26:31:436]: Hello, I'm your 32bit Elevated custom action server.
CAQuietExec64:  
CAQuietExec64:  
CAQuietExec64:  Name             : ConsoleHost
CAQuietExec64:  Version          : 2.0
CAQuietExec64:  InstanceId       : 62b0349c-8d16-4bd1-94e5-d1fe54a9ff54
CAQuietExec64:  UI               : System.Management.Automation.Internal.Host.InternalHostUserI
CAQuietExec64:                     nterface
CAQuietExec64:  CurrentCulture   : en-US
CAQuietExec64:  CurrentUICulture : en-US
CAQuietExec64:  PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
CAQuietExec64:  IsRunspacePushed : False
CAQuietExec64:  Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Именно на этом этапе программа установки кажется остановленной, поскольку PowerShell не завершает работу. Когда я вручную завершаю работу PowerShell с помощью диспетчера задач, в журнале появляются следующие несколько сообщений:

CAQuietExec64:  Error 0x80070001: Command line returned an error.
CAQuietExec64:  Error 0x80070001: CAQuietExec64 Failed CustomAction RegisterHttpModulePowerShellProperty returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) Action ended 10:27:10: InstallFinalize. Return value 3.

Как мне незаметно выполнить сценарий PowerShell из Wix без зависания PowerShell?

11
задан Yan Sklyarenko 13 January 2016 в 08:54
поделиться