3

我有一个纯 InstallScript 项目,由于这个问题,结果证明是有问题的。通过添加一些在安装新文件之前擦除特定目录的 InstallScript 临时解决了这个问题,这并不理想。但是,这一系列论坛帖子表明 InstallScript MSI 项目或 Basic MSI 项目将大大简化升级时动态链接文件的删除。

搜索 Flexara 论坛,我发现很多帖子都反对 InstallScript MSI 项目类型,所以我正在查看 Basic MSI。显然 Flexara 有一个名为 Repackager 的产品,它可以将 InstallScript 项目转换为 Basic MSI。但是,它只附带 IS Premier 或 Admin Studio,这意味着我们必须花一些钱。在我走这条路之前,我需要一些迹象表明这可能会奏效。

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

2 回答 2

3

重新打包程序最多只能捕获安装业务规则的一个实例。您不能简单地“转换”您的安装,而是重新设计它。理想情况下,您应该让 MSI 专家审查您的 InstallScript 项目,并确定可以通过重构为 MSI 最佳实践来消除的部分,然后重写其余部分以适应 MSI 的序列表。

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

如果您希望将配置数据从旧的安装上下文持久保存到新的上下文,它也可能会更复杂。

这些年来我已经做了很多这样的事情,虽然它可能非常具有挑战性,但当你一路清理掉很多污垢时,它也可能是有益的。

于 2011-03-03T23:33:49.960 回答
3

出于克里斯托弗提到的相同原因,我不会推荐重新包装器解决方案。

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

这为您提供了两全其美的优势 - 一个强大的 Basic MSI 软件包,您可以完全控制它(因为它不是由重新打包程序自动生成的)加上节省时间,因为您不必从头开始重新实现您的 InstallScript 功能。

于 2011-03-04T15:35:03.597 回答