我有一个纯粹的InstallScript项目,由于this issue而导致问题。通过添加一些在安装新文件之前擦除特定目录的InstallScript来暂时解决这个问题,这是不理想的。但是,this series of forum posts表示InstallScript MSI项目或Basic MSI项目将大大简化升级时动态链接文件的删除。
在搜索Flexara论坛时,我发现很多帖子都是针对InstallScript MSI项目类型的,所以我正在研究Basic MSI。显然,Flexara有一个名为Repackager的产品,可以convert InstallScript projects to Basic MSI。但是,它只附带IS Premier或Admin Studio,这意味着我们必须花一些钱。在我走这条路之前,我需要一些迹象表明这可能有用。
答案 0 :(得分:3)
一个repackager最多只能捕获一个安装业务规则的实例。您不能简单地“转换”您的安装,而是重新设计它。理想情况下,您将有一位MSI专家审核您的InstallScript项目,并通过重构MSI最佳实践来识别可以消除的部分,然后重写其余部分以适合MSI的序列表。
如果您的旧卸载行为很好,您可以编写一个删除它的自定义操作。如果您的新产品转到新的安装目录,这是最简单的,因为您可以消除潜在的文件成本问题。如果这是不可能的和/或您的旧安装没有正常运行的卸载,那么这将变得更加复杂。
如果您希望将旧安装上下文中的配置数据保留到新上下文,那么它也会更复杂。
多年来我已经完成了很多这些工作,虽然它可能非常具有挑战性,但是当你在整个过程中清理掉很多东西时也可以获得回报。
答案 1 :(得分:3)
我不推荐重新打包解决方案,原因与克里斯托弗提到的相同。
InstallScript项目和新的Basic MSI项目之间的良好桥梁是创建一个使用InstallScript自定义操作的新的Basic MSI项目。使用此方法,MSI引擎将管理安装的非专有方面,并且可以重用旧版InstallScript代码来管理安装的专有方面。
这为您提供了两全其美的功能 - 一个强大的基本MSI软件包,您可以完全控制它(因为它不是由重新打包程序自动生成的)因为您不必重新实现您的InstallScript函数,所以可以节省大量时间划伤。