2

我终于让我的嵌入式chainer msi 运行了,通过我的C#chainer.exe 中的Installer.InstallProduct 安装了四个子msi(如stackoverflow 上其他地方的唯一一个chainer 示例中所述)。我的问题:如果我之后卸载包,当调用“transaction.Join”时,这次它会失败并出现 MSI 错误:句柄错误。我必须在任务管理器中杀死 msiexec.exe 进程,然后一切运行正常。

有什么建议么?

附录:我使用的是 Windows Installer 4.5,并且 MsiEmbeddedChainer 表中只有一个条目。四个msi 由chainer 可执行文件一个接一个地处理。

4

2 回答 2

0

以下是一些检查建议:

1) Windows Installer 4.0 及更早版本不支持多包 Windows Installer 安装的事务处理。需要 Windows Installer 4.5 或更高版本才能将多个包的安装作为单个事务回滚。此处列出了在安装程序安装、修复、更新或删除应用程序时可能导致问题的 Windows 安装程序功能:多包安装

2) 如果MsiEmbeddedChainer表中有多个条目。只能启动一个嵌入式链接器。如果多个条目都已被条件运行,则未定义哪个条目将运行。

于 2012-11-26T23:35:17.393 回答
0

最后,问题得到解决:ac#嵌入式链接器的标准示例中有一个错误:

在该行中: IntPtr ptr = new IntPtr(Convert.ToInt32(args[0], 16)); “16”必须改为“10”!

否则,如果嵌入式链接器启动了超过 10 个事务(如在我的设置中,安装了五个子 msi),“transaction.Join”使用的句柄在某些时候会出错并给出“坏处理”错误。

非常感谢微软在这个问题上的帮助!

于 2013-08-08T09:49:36.600 回答