InstallShield Basic MSI中的SetTargetPath事件如何工作?

时间:2015-09-15 13:12:07

标签: windows-installer installshield

我有一个需要安装到多个驱动器和目录的产品,其中一些可以自定义。因此,我正在查看InstallShield Basic MSI项目中运行时目录的更改方式。我看到DestinationFolderInstallChangeFolder对话框在INSTALLDIR按下SetTargetPath按钮时使用OK事件一起更改InstallChangeFolder目录。

我不明白为什么SetTagetPath只有一个参数。除了安装句柄之外,MsiSetTargetPath函数还有2个参数,所以我不明白为什么SetTargetPath事件只需要1.我想设置一个指定的目录变量来引用指定的目录。这需要两个参数。他们如何只使用一个参数?

我已经阅读了documentation on SetTargetPath 3次,但仍然没有意义。

2 个答案:

答案 0 :(得分:1)

SetTargetPath的目的似乎是将属性中的更新值传递给同名的目录变量,对旧值和新值执行一些验证(分别在目录变量和属性值中) ) 进行中。因此,将新值传输到目录变量似乎分两步进行:

  1. 将同名的属性设置为新值。
  2. 调用SetTargetPath提供属性名称,将teh属性中的值复制到目录中。
  3. 在执行此操作时,请注意,如果提供的属性是括号,则应该引用另一个属性名称。因此,如果要复制到目录变量的值直接在属性中,请不要使用括号。

答案 1 :(得分:0)

您想研究"文件成本核算" (成本初始化,成本最终确定)。在计算成本之前,您可以使用Type 51 Set Property自定义操作。成本计算后,您必须使用Type 35 Set Directory自定义操作。这是因为需要重新计算成本核算。

我注意到你有很多MSI问题。您可能想要阅读一本书,例如Phil Wilson的Windows Installer权威指南。这和导师是最好的信息来源,因为这方面的培训很少。