Windows installer InstallShield Basic MSI中的SetTargetPath事件如何工作?
我有一个产品,需要安装到多个驱动器和目录,其中一些可以自定义。所以我在看InstallShield基本MSI项目中目录在运行时是如何更改的。我看到Windows installer InstallShield Basic MSI中的SetTargetPath事件如何工作?,windows-installer,installshield,Windows Installer,Installshield,我有一个产品,需要安装到多个驱动器和目录,其中一些可以自定义。所以我在看InstallShield基本MSI项目中目录在运行时是如何更改的。我看到DestinationFolder和InstallChangeFolder对话框协同工作,使用SetTargetPath事件,在OK按钮上按下InstallChangeFolder来更改INSTALLDIR目录 我不明白的是为什么SetTagetPath只有一个参数。MsiSetTargetPath函数除了安装句柄外还需要2个参数,因此我不明白为什么S
DestinationFolder
和InstallChangeFolder
对话框协同工作,使用SetTargetPath
事件,在OK
按钮上按下InstallChangeFolder
来更改INSTALLDIR
目录
我不明白的是为什么SetTagetPath
只有一个参数。MsiSetTargetPath
函数除了安装句柄外还需要2个参数,因此我不明白为什么SetTargetPath
事件只需要1个参数。我想设置一个指定的目录变量来引用指定的目录。这需要两个参数。只有一个参数,他们怎么过得去
我已经读了3遍,但仍然没有任何意义。似乎
SetTargetPath
的目的是将属性中的更新值传输到同名的目录变量,并在此过程中对旧值和新值(分别在目录变量和属性值中)执行一些验证。因此,将新值传输到目录变量似乎分两步进行:
SetTargetPath
提供属性名称,将属性中的值复制到目录中我注意到你有很多MSI问题。你可能想读一本书,比如菲尔·威尔逊(Phil Wilson)的《Windows Installer最终指南》。这和导师是最好的信息来源,因为这方面的培训太少了。我就是这样学习的:用一种几乎不熟悉的技术跳进一个新项目,这样我就可以从头开始,然后把它喝到膝盖周围:)。我想我已经把它放在胸部了。在SO和谷歌的帮助下,我学到了很多。我想这比看书快多了。到目前为止,我最显著的成就是为每个实例更新InstallShield的MSI转换,同时替换所有组件GUID。似乎可以使多实例安装非常干净地进行,而不必重复10次。我关于SetTargetPath的回答是否显示出对正在发生的事情有很好的理解?我正在设置属性,并在成本最终确定后为这些属性调用
SetTargetPath
,因为我认为这就是我看到的标准更改目标对话框所做的。我发现改变INSTALLDIR的唯一方法是将它引用到另一个属性,然后对该属性调用SetTargetPath。仅将值设置为另一个字符串在对话框中起作用,但在安装文件时不起作用。