使用Wix Installer部署内部Windows Service的无交互安装问题
解决Wix Installer后台部署Windows Service的“未知发布者”问题
一、生成自签名代码签名证书
用PowerShell创建符合代码签名要求的自签名证书:
- 打开管理员PowerShell,执行以下命令生成证书并存储到本地计算机的个人证书库:
New-SelfSignedCertificate -Subject "CN=你的公司内部证书名称" -CertStoreLocation "Cert:\LocalMachine\My" -KeyUsage DigitalSignature -Type CodeSigningCert - 导出证书为PFX格式(签名安装包需要):
- 运行
certlm.msc打开本地计算机证书管理器 - 找到「个人」>「证书」里刚生成的证书,右键>「所有任务」>「导出」
- 选择导出私钥,设置密码,保存为
CodeSignCert.pfx文件
- 运行
二、用证书签名Wix生成的MSI安装包
使用Windows SDK自带的signtool.exe签名安装包:
- 找到signtool路径(通常在
C:\Program Files (x86)\Windows Kits\10\bin\<版本号>\x64下),执行命令:
注:signtool sign /f "CodeSignCert.pfx" /p "你的PFX密码" /t http://timestamp.digicert.com "你的Wix安装包.msi"/t参数指定时间戳服务器,避免证书过期后安装包失效
三、将自签名证书部署到所有目标电脑的信任根
公司内部批量部署可以用组策略,单台测试用PowerShell:
组策略批量部署
- 在域控制器上打开「组策略管理」,创建新的组策略对象(GPO)
- 编辑GPO,定位到「计算机配置」>「策略」>「Windows设置」>「安全设置」>「公钥策略」>「受信任的根证书颁发机构」
- 右键>「导入」,选择之前生成的证书(可导出不带私钥的CER格式),完成导入后,链接GPO到目标计算机所在的组织单元(OU)
单台电脑手动部署
打开管理员PowerShell执行:
Import-Certificate -FilePath "CodeSignCert.cer" -CertStoreLocation "Cert:\LocalMachine\Root"
四、后台无交互运行安装包
用msiexec命令实现静默安装:
msiexec /i "你的Wix安装包.msi" /qn /norestart
/qn:完全无交互模式/norestart:安装完成不自动重启(可根据需求调整)
内容的提问来源于stack exchange,提问作者5k1n2
相关产品推荐
相关产品推荐

