我安装中的一个文件需要复制到用户目标机器上的注册表项/值对指向的位置。
现在,我有了一种简单的解决方案,将文件设置为在Components视图中复制到TempFolder,然后在我的OnFirstUIBefore()函数中使用一些自定义InstallScript代码,它从注册表获取值,然后在TempFolder上执行MSIGetProperty,最后从TempFolder执行CopyFile()到前面从注册表获取的路径。
这是可行的,但都有点麻烦。一位同事说,他认为我应该能够对自定义属性名(如MSISetProperty )执行MY_RSRC_DIR操作,然后以某种方式使用组件窗格中的自定义属性将文件复制到正确的位置。
我可以在OnBegin()函数中执行OnBegin,但是尝试将该属性插入Components视图是我还无法工作的东西。
有人这样做过吗?如果是的话,怎么做的?
发布于 2009-05-01 18:52:20
在InstallScript MSI项目中,您应该采用MSI方法。创建一个辅助文件夹(例如将其添加到“文件和文件夹”视图中),并将您的文件添加到其中。确保找到它的目录属性(类似于NEWFOLDER1;确保它都是大写的)。如果需要,可以编辑Directory表,使其成为TARGETDIR的子表,但这是可选的,如果注册表搜索失败,可以将文件放在WindowsVolume下,所以最好将其保留为INSTALLDIR的子表。
然后,如果您可以在成本计算之前找到目录(即在CostInitialize之前,哪个是OnBegin ),则可以使用系统搜索、SetProperty自定义操作(类型51)或MsiSetProperty()来设置属性(例如NEWFOLDER1)。如果必须在成本计算后找到它,则需要使用SetDirectory自定义操作(键入35)或MsiSetTargetPath(),因为属性将不再更新目录。
这样,将跟踪您的文件位置,并且卸载应该正常工作。
https://stackoverflow.com/questions/809459
复制相似问题