0

我正在尝试使用我的 WiX 安装程序部署 PostGreSqlServer,但它只是一直失败,我不知道为什么。

我的 wxs 文件的重要部分:

<Binary SourceFile="postgresql-9.2.1-1-windows.exe" Id="PostGreInstaller"  />

<CustomAction  Id="InstallPostGre" BinaryKey="PostGreInstaller"
               ExeCommand='"--serverport 5432 --servicename postgres_service --locale C --superaccount Myadmin --superpassword Mypassword --unattendedmodeui minimal --debuglevel 2 --mode unattended"'
               Execute="deferred" Return="check"   Impersonate="yes" />

<InstallExecuteSequence>
  <Custom Action="InstallPostGre" Before="InstallFinalize" />
</InstallExecuteSequence>

已经在 cmd shell 中尝试过该命令并且它有效。不要为什么它不在安装程序中。

我确定安装程序已嵌入安装程序,因为它有超过 50MB。

我也启动了我的 msi 并打开了日志记录,但这也没有真正帮助我......

Action 16:34:29: InstallPostGre. 
MSI (s) (64:E0) [16:34:29:407]: Executing op: CustomActionSchedule(Action=InstallPostGre,ActionType=1026,Source=BinaryData,Target=--serverport 5432 --servicename postgres_service --locale C --superaccount Myadmin --superpassword Mypassword --unattendedmodeui minimal --debuglevel 2 --mode unattended,)
MSI (s) (64:E0) [16:34:31:698]: Note: 1: 1721 2: InstallPostGre 3: C:\Windows\Installer\MSIE410.tmp 4: --serverport 5432 --servicename postgres_service --locale C --superaccount Myadmin --superpassword Mypassword --unattendedmodeui minimal --debuglevel 2 --mode unattended 
MSI (s) (64:E0) [16:34:31:698]: Note: 1: 2205 2:  3: Error 
MSI (s) (64:E0) [16:34:31:698]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1721 
Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: InstallPostGre, location: C:\Windows\Installer\MSIE410.tmp, command: --serverport 5432 --servicename postgres_service --locale C --superaccount Myadmin --superpassword Mypassword --unattendedmodeui minimal --debuglevel 2 --mode unattended 
MSI (s) (64:E0) [16:34:34:717]: Note: 1: 2205 2:  3: Error 
MSI (s) (64:E0) [16:34:34:717]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709 
MSI (s) (64:E0) [16:34:34:717]: Product: Hausverwaltung -- Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: InstallPostGre, location: C:\Windows\Installer\MSIE410.tmp, command: --serverport 5432 --servicename postgres_service --locale C --superaccount Myadmin --superpassword Mypassword --unattendedmodeui minimal --debuglevel 2 --mode unattended 

那里有 WiX 大师吗?:)

4

3 回答 3

3

这不起作用的最可能原因是 postgres exe 已经包含一个 msi,并且您在创建事务时一次只能安装一个 msi,并且(目前我听说计划更改此设置)您只能运行一个事务一次。正如前面的答案所述,您可以使用刻录包将两个安装程序打包在一起,从而获得无缝的用户体验。您还可以通过注册表搜索检查您是否真的需要安装 postgres。

于 2012-11-01T08:48:25.533 回答
2

您可以使用 WIX v3.6 Bundle 概念来处理这个问题。你可以在这里阅读更多关于它的信息http://wix.sourceforge.net/manual-wix3/authoring_bundle_intro.htm

基本上,您将 WIX MSI 和 EXE 打包成一个 WIX 捆绑包,然后可以将其安装到目标机器上。

或者您可以编写可以通过 CustomActions 执行的脚本,例如您尝试过的 EXECCommand。但我更愿意使用 Bundle,因为它以更好的方式管理卸载和升级。所以试试 WIX 捆绑包,看看效果如何。

于 2012-10-31T22:29:12.710 回答
0

只要关闭 Windows 用户访问控制,我就成功使用了您使用的技术。

于 2012-11-07T05:10:13.120 回答