从InstallScript项目转换为基本MSI的可行性

时间:2011-03-03 22:55:16

标签: install installshield installscript basic-msi

我有一个纯粹的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,这意味着我们必须花一些钱。在我走这条路之前,我需要一些迹象表明这可能有用。

  • 使用Repackager工具从InstallScript转换为Basic MSI时是否会丢失任何功能?我们的脚本中有一些逻辑,包括this之类的信息传递信息安装的几个步骤。我们还使用了几个InstallShield NT服务对象,遗传对象,我认为我必须与IS2010分开安装。是否已知Repackager无法处理的InstallScript项目的任何方面?
  • 如果Repackager不会神奇地转换项目,那么我是否可以按照指南手动进行转换?我发现InstallShield文档和论坛非常严重缺乏。
  • 生成的基本MSI安装包是否能够在安装了旧(纯InstallScript)版本的系统上执行升级安装?这真的是一个奖励。在这一点上,我期待我们只是被迫完全卸载/重新安装。

2 个答案:

答案 0 :(得分:3)

一个repackager最多只能捕获一个安装业务规则的实例。您不能简单地“转换”您的安装,而是重新设计它。理想情况下,您将有一位MSI专家审核您的InstallScript项目,并通过重构MSI最佳实践来识别可以消除的部分,然后重写其余部分以适合MSI的序列表。

如果您的旧卸载行为很好,您可以编写一个删除它的自定义操作。如果您的新产品转到新的安装目录,这是最简单的,因为您可以消除潜在的文件成本问题。如果这是不可能的和/或您的旧安装没有正常运行的卸载,那么这将变得更加复杂。

如果您希望将旧安装上下文中的配置数据保留到新上下文,那么它也会更复杂。

多年来我已经完成了很多这些工作,虽然它可能非常具有挑战性,但是当你在整个过程中清理掉很多东西时也可以获得回报。

答案 1 :(得分:3)

我不推荐重新打包解决方案,原因与克里斯托弗提到的相同。

InstallScript项目和新的Basic MSI项目之间的良好桥梁是创建一个使用InstallScript自定义操作的新的Basic MSI项目。使用此方法,MSI引擎将管理安装的非专有方面,并且可以重用旧版InstallScript代码来管理安装的专有方面。

这为您提供了两全其美的功能 - 一个强大的基本MSI软件包,您可以完全控制它(因为它不是由重新打包程序自动生成的)因为您不必重新实现您的InstallScript函数,所以可以节省大量时间划伤。