InstallShield:使用具有相对路径的LaunchAppAndWait()

时间:2013-07-30 09:14:32

标签: installshield relative-path installscript

假设我有以下文件夹结构:

c:\ Test \ setup.exe (这是主安装启动器)

c:\ Test \ Feature1 \ setup.exe (feature1的安装)

c:\ Test \ Feature2 \ setup.exe (功能2的安装)

我在主安装启动器中创建了自定义的InstallShield对话框,用户可以在其中单击相应的按钮并运行Feature1或Feature2的安装。我使用InstallScript LaunchAppAndWait()函数执行此操作。所以,我的问题是 - 我怎么能用相对路径来做呢?

例如:

LaunchAppAndWait("c:\\Test\\Feature1\\setup.exe", "", LAAW_OPTION_WAIT) - it works.
LaunchAppAndWait("Feature1\\setup.exe", "", LAAW_OPTION_WAIT) - doesn't work.

1 个答案:

答案 0 :(得分:1)

首先,对于这样的场景,我通常建议您创建一个Suite / Advanced UI项目。完成此操作后,您可以直接关联软件包(例如,包含的setup.exe文件,但基础的.msi或.hdr文件是更好的选择),并具有您正在安装的套件的功能。

但是假设您的变化太大,或者出于某种其他原因而不合适,您应该能够创建一个绝对路径来调整设置运行的位置。如果这是一个InstallScript包装器项目,则通过引用PACKAGE_LOCATION或如果这是一个Basic MSI或InstallScript MSI包装器项目引用属性SETUPEXEDIR来执行此操作。假设前者,它看起来像这样:

LaunchAppAndWait(PACKAGE_LOCATION ^ "Feature1\\setup.exe", "", LAAW_OPTION_WAIT);

对于后者,最后一步看起来很相似,但您首先必须使用SETUPEXEDIR检索MsiGetProperty的值。