我正在使用 installshield 2010 编写一个基本的 MSI 安装程序。另一家公司将提供一个 .reg 文件,安装程序将在运行时读取该文件并相应地更新注册表。
我不知道如何做到这一点。
我设法使用完成此操作的 Installscript 编写了一个脚本,但是当此脚本以不同的执行方式运行时,我不知道如何进入 setup.exe 所在的源目录(以及 .reg 文件)。
MSIGetproperty 不起作用,我为 SETUPEXEDIR 得到的只是“”。
我正在使用 installshield 2010 编写一个基本的 MSI 安装程序。另一家公司将提供一个 .reg 文件,安装程序将在运行时读取该文件并相应地更新注册表。
我不知道如何做到这一点。
我设法使用完成此操作的 Installscript 编写了一个脚本,但是当此脚本以不同的执行方式运行时,我不知道如何进入 setup.exe 所在的源目录(以及 .reg 文件)。
MSIGetproperty 不起作用,我为 SETUPEXEDIR 得到的只是“”。
在延迟执行期间,您无权访问大多数属性。您可以: 1. 使用 CustomActionData 属性传递您需要的值。2. 使用从 REG 文件中读取的内容更新注册表的即时自定义操作。这样,Windows Installer 引擎将为您处理回滚。
我还可以建议一个替代解决方案:另一家公司将提供一个 MST 文件,其中包含注册表中应该包含在 REG 文件中的内容。然后将使用指向 MST 的 TRANSFORMS 属性执行安装。这样您就可以免费回滚和卸载。
您可以一起使用 Signature、DrLocator 和 AppSearch 表将注册表文件的位置放在某个公共属性中。我们将其称为“MY_REG_FILE”。然后将自定义操作的条件设置为“MY_REG_FILE”。如果文件实际上不存在,则不会设置属性,条件将评估为 false,并且操作不会运行。
MSDN 有一个使用三个表一起查找文件的示例 - http://msdn.microsoft.com/en-us/library/aa371552%28VS.85%29.aspx