我有一个WiX MSI安装程序,用于在my_server
上运行的 ASP.NET 网站。该包是通过一个非常简单的Powershell脚本install.ps1
安装的,该脚本仅使用一些参数调用msiexec
。
问题所在
当我直接在my_server
上运行install.ps1
时,一切都很好。但是当我想从远程机器在my_server
上运行install.ps1
时(例如 build_server
),安装失败,错误代码为 1603,MSI 安装日志显示以下错误:
操作开始 14:22:30:配置用户。
配置用户:错误0x80070005:无法添加/删除用户操作
自定义操作配置用户返回实际错误代码 1603
有什么建议吗?
额外信息
-
我使用以下命令远程运行
install.ps1
:Invoke-Command -ComputerName my_server -ScriptBlock { pathtoinstall.ps1 } -Authentication Negotiate
-
我在
my_server
和build_server
上使用相同的用户凭据。 -
在 WiX 定义中,网站使用应用池的特定用户帐户进行设置,如下所示:
<Component Id="AppPoolCmp" Guid="a-fine-looking-guid" KeyPath="yes"> <util:User Id="AppPoolUser" CreateUser="no" RemoveOnUninstall="no" Name="[APP_POOL_IDENTITY_NAME]" Password="[APP_POOL_IDENTITY_PWD]" Domain="[APP_POOL_IDENTITY_DOMAIN]"> </util:User> <iis:WebAppPool Id="AppPool" Name="[APP_POOL_NAME]" ManagedPipelineMode="Classic" ManagedRuntimeVersion="v4.0" Identity="other" User="AppPoolUser"> <iis:RecycleTime Value="5:00" /> </iis:WebAppPool> </Component>
这可能是双跃点问题,您的凭据在第一台服务器的范围之外无效。
您可以使用以下选项执行命令吗:
-Authentication CredSSP
而不是Negotiate
.
您还需要使用 -Credentials
标志手动指定凭据,并为 CredSSP 设置客户端和服务器:
Enable-WSManCredSSP -Role Client -DelegateComputer HOSTNAME -Force
Enable-WSManCredSSP -Role Server -Force
此处更详细地解释了这些步骤。