我在一个链式msi Basic MSI项目中有3个MSI。
安装和卸载工作正常但如果我选择修复,InstallShield只执行父MSI并忽略其中的所有其他MSI。
我已按照说明进行操作 http://community.flexerasoftware.com/showthread.php?191832-Repair-chained-msi
并在选项列上设置ecoReinstallInstalled,但它似乎无法正常工作
知道我错过了什么吗?
答案 0 :(得分:0)
所以你有一个包装器或父MSI产生3链式MSI?您需要通过install属性将REINSTALL = ALL传递给每个链接的MSI。但是,只有已经安装了每个MSI,所以可能是一个自定义操作来检测首次安装与否,然后使用REINSTALL = ALL设置一个或多个属性。
答案 1 :(得分:0)
您需要设置名为ecoReinstallInstalled的标志(Installshield help未提及此关键字),该标题在“使用链式MSI软件包对Windows Installer安装程序进行组件化”文档中引用。
基本上,通过将值16添加到当前值,可以更改指定链式MSI的ISChainPackage表的“选项”列。如果该值小于16;例如,值为0,将其替换为16;如果值为1,则将其替换为17,依此类推。选项值确定UI级别模式(链式MSI将运行的模式);对于基本UI为0,对于无UI为1,值为16或更高将允许链式MSI在已经安装后重新运行。
如果这不起作用,你应该通过修改属性IS_CHAINER_POST_COMMANDLINE来检查链接的MSI的日志文件,你也可以尝试在ui模式下运行链式MSI以查看行为是什么。
有趣的是,您使用了哪种替代方法而不是链式MSI功能?
按照网页正在进行的方式查看我的博客: