0

我正在使用 installshield 2010 编写一个基本的 MSI 安装程序。另一家公司将提供一个 .reg 文件,安装程序将在运行时读取该文件并相应地更新注册表。

我不知道如何做到这一点。

我设法使用完成此操作的 Installscript 编写了一个脚本,但是当此脚本以不同的执行方式运行时,我不知道如何进入 setup.exe 所在的源目录(以及 .reg 文件)。

MSIGetproperty 不起作用,我为 SETUPEXEDIR 得到的只是“”。

4

2 回答 2

2

在延迟执行期间,您无权访问大多数属性。您可以: 1. 使用 CustomActionData 属性传递您需要的值。2. 使用从 REG 文件中读取的内容更新注册表的即时自定义操作。这样,Windows Installer 引擎将为您处理回滚。

我还可以建议一个替代解决方案:另一家公司将提供一个 MST 文件,其中包含注册表中应该包含在 REG 文件中的内容。然后将使用指向 MST 的 TRANSFORMS 属性执行安装。这样您就可以免费回滚和卸载。

于 2010-01-10T14:38:39.413 回答
1

您可以一起使用 Signature、DrLocator 和 AppSearch 表将注册表文件的位置放在某个公共属性中。我们将其称为“MY_REG_FILE”。然后将自定义操作的条件设置为“MY_REG_FILE”。如果文件实际上不存在,则不会设置属性,条件将评估为 false,并且操作不会运行。

MSDN 有一个使用三个表一起查找文件的示例 - http://msdn.microsoft.com/en-us/library/aa371552%28VS.85%29.aspx

于 2010-01-21T05:56:54.637 回答