首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归MSI链

递归MSI链
EN

Stack Overflow用户
提问于 2016-05-03 18:49:39
回答 1查看 580关注 0票数 0

我正在使用InstallShield 2015编写一个基本MSI类型的安装程序。我有一个服务器安装,一个工作站安装,还有一个第三方(微软)安装程序,用来支持通过COM互操作(Microsoft.InteropformsRedist.msi)访问Microsoft.InteropformsRedist.msi表单。工作站需要安装Microsoft.InteropformsRedist.msi。服务器需要安装工作站。单独地,这些配对可以工作,但是当服务器试图安装工作站,而工作站又想要安装InteropformsRedist时,似乎没有安装InteropformsRedist。我看到在MSI日志中提到了它,但是没有明确的迹象表明它没有实际安装。我只是在安装后遇到了错误,这些错误通过手动运行InteropformRedist.msi来解决。

日志中第一次提到InteropformsRedist如下所示:

代码语言:javascript
复制
InstallShield 12:11:11: Extracting temp files for chained package Pkg1 to 'C:\Users\bmarty\AppData\Local\Temp\{88EF0570-B960-4DD7-BF2F-F942CE0C9EEE}'
MSI (s) (70!C0) [12:11:24:671]: PROPERTY CHANGE: Adding IS_CHAINER_POST_COMMANDLINE property. Its value is '/l"C:\Users\bmarty\AppData\Local\Temp\MSI7fa2d.LOG" /qb /iC:\Users\bmarty\AppData\Local\Temp\{88EF0570-B960-4DD7-BF2F-F942CE0C9EEE}\Microsoft.InteropformsRedist.msi'.
MSI (s) (70!C0) [12:11:24:671]: PROPERTY CHANGE: Adding ISChainPackageCommit property. Its value is 'C:\Users\bmarty\AppData\Local\Temp\{88EF0570-B960-4DD7-BF2F-F942CE0C9EEE}'.
MSI (s) (70!C0) [12:11:24:671]: PROPERTY CHANGE: Adding ISChainPackageRollback property. Its value is 'C:\Users\bmarty\AppData\Local\Temp\{88EF0570-B960-4DD7-BF2F-F942CE0C9EEE}'.
InstallShield 12:11:11: Extracting file 'C:\Users\bmarty\AppData\Local\Temp\{88EF0570-B960-4DD7-BF2F-F942CE0C9EEE}\Microsoft.InteropformsRedist.msi' for chained package Pkg1
MSI (s) (70:EC) [12:11:24:672]: Doing action: InstallInitialize
Action ended 12:11:24: ISChainPackagePrepare. Return value 1.
MSI (s) (70:EC) [12:11:24:673]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (70:EC) [12:11:24:673]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (70:EC) [12:11:24:673]: BeginTransaction: Locking Server
MSI (s) (70:EC) [12:11:24:674]: Server not locked: locking for product {11FD6005-8100-4B5C-85E6-C26BAD6C8696}
Action start 12:11:24: InstallInitialize.
MSI (s) (70:EC) [12:11:26:245]: Doing action: ISChainPackageRollback
Action ended 12:11:26: InstallInitialize. Return value 1.
MSI (s) (70:EC) [12:11:26:246]: Note: 1: 2205 2:  3: MsiPatchCertificate 
MSI (s) (70:EC) [12:11:26:246]: LUA patching is disabled: missing MsiPatchCertificate table
Action start 12:11:26: ISChainPackageRollback.
MSI (s) (70:EC) [12:11:26:249]: Doing action: ISChainPackageCommit
Action ended 12:11:26: ISChainPackageRollback. Return value 1.
Action start 12:11:26: ISChainPackageCommit.
MSI (s) (70:EC) [12:11:26:250]: Doing action: AllocateRegistrySpace
Action ended 12:11:26: ISChainPackageCommit. Return value 1.
Action start 12:11:26: AllocateRegistrySpace.
MSI (s) (70:EC) [12:11:26:251]: Doing action: ProcessComponents
Action ended 12:11:26: AllocateRegistrySpace. Return value 1.
Action start 12:11:26: ProcessComponents.
MSI (s) (70:EC) [12:11:26:253]: Doing action: UnpublishComponents
Action ended 12:11:26: ProcessComponents. Return value 1.

有没有任何迹象表明它为什么没有实际安装?做这件事有什么诡计吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 11:45:29

如果您使用版本视图的“链式MSI包”区域,则使用嵌入式链接(通过MsiEmbeddedChainer表 )。我从来没有找到关于它的限制的明确文档,但它有几个。您所看到的相关链接是,它不会从另一个链子中启动嵌入式链子。这可能是因为如果外部链有后续包,它不知道如何收回事务的所有权,并且在内部链释放(或提交)事务之前不能这样做;这将导致在phChangeOfOwnerEvent of MsiJoinTransaction的评论中回滚。

我们从经验中了解到,外部链或引导链具有较少的奇怪行为,因此我推荐它们而不是嵌入式链接。如果您想通过InstallShield实现这一点,您将需要高级版本的Suite/Advanced项目类型。(如果除了一个包之外,所有包都可以被视为依赖项,然后从prq文件中导入它们,那么它们将符合专业版中高级UI项目的限制。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37012139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档