2009-04-30 72 views
1

我的安装中的一个文件需要复制到用户目标机器上的注册表项/值对所指向的位置。如何将文件安装到Installshield Installscript-MSI项目中的注册表项/值所指向的目录中?

现在,我有一种kludgy解决方案,我将文件设置为在组件视图中复制到[TempFolder],然后在我的OnFirstUIBefore()函数中获取一些自定义InstallScript代码,该函数从注册表中获取值,然后在[TempFolder]上执行一个MSIGetProperty,最后从[TempFolder]执行一个CopyFile()到我们之前从注册表中获取的路径。

这个工程但有点麻烦。一位同事说他认为我应该能够对自定义属性名称(如MY_RSRC_DIR)执行MSISetProperty,然后以某种方式使用“组件”窗格中的该自定义属性将该文件复制到正确的位置。

我可以尽可能在OnBegin()函数中执行MSISetProperty,但试图将该属性插入到组件视图中是我还没有能够工作的东西。

有没有人这样做,如果是这样,如何?

回答

1

在InstallScript MSI项目中,您应该采用MSI方法。创建一个辅助文件夹(例如将其添加到文件和文件夹视图),并将文件添加到它。确保找到它的目录属性(像NEWFOLDER1;确保它是全部大写的)。如果需要,可以编辑Directory表使其成为TARGETDIR的子项,但这是可选项,并且如果注册表搜索失败,可能会导致文件被放置在[WindowsVolume]下,因此最好将其保留为INSTALLDIR的子项。

然后,如果您可以在成本计算之前找到目录(即在CostInitialize之前,哪个OnBegin会),您可以使用System Search,SetProperty自定义操作(类型51)或MsiSetProperty()设置属性(例如NEWFOLDER1) 。如果您必须在成本计算后找到它,则需要使用SetDirectory自定义操作(类型35)或MsiSetTargetPath(),因为该属性将不再更新目录。

这种方式Windows安装程序将为您跟踪文件位置并卸载应该正常工作。

+0

我不知道你刚刚说了什么。我是一个noob w.r.t installshield。你能提供更多的细节......我会给1点:) – David 2014-03-12 16:09:44

相关问题