假设我有以下文件夹结构:
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.
答案 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
的值。