我有一个需要安装到多个驱动器和目录的产品,其中一些可以自定义。因此,我正在查看InstallShield Basic MSI项目中运行时目录的更改方式。我看到DestinationFolder
和InstallChangeFolder
对话框在INSTALLDIR
按下SetTargetPath
按钮时使用OK
事件一起更改InstallChangeFolder
目录。
我不明白为什么SetTagetPath
只有一个参数。除了安装句柄之外,MsiSetTargetPath
函数还有2个参数,所以我不明白为什么SetTargetPath
事件只需要1.我想设置一个指定的目录变量来引用指定的目录。这需要两个参数。他们如何只使用一个参数?
我已经阅读了documentation on SetTargetPath
3次,但仍然没有意义。
答案 0 :(得分:1)
SetTargetPath
的目的似乎是将属性中的更新值传递给同名的目录变量,对旧值和新值执行一些验证(分别在目录变量和属性值中) ) 进行中。因此,将新值传输到目录变量似乎分两步进行:
SetTargetPath
提供属性名称,将teh属性中的值复制到目录中。在执行此操作时,请注意,如果提供的属性是括号,则应该引用另一个属性名称。因此,如果要复制到目录变量的值直接在属性中,请不要使用括号。
答案 1 :(得分:0)
您想研究"文件成本核算" (成本初始化,成本最终确定)。在计算成本之前,您可以使用Type 51 Set Property自定义操作。成本计算后,您必须使用Type 35 Set Directory自定义操作。这是因为需要重新计算成本核算。
我注意到你有很多MSI问题。您可能想要阅读一本书,例如Phil Wilson的Windows Installer权威指南。这和导师是最好的信息来源,因为这方面的培训很少。