2

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

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

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

c:\Test\Feature2\setup.exe(安装feature2)

我在主安装启动器中创建了自定义的 InstallShield 对话框,用户可以在其中单击相应的按钮并运行 Feature1 或 Feature2 的安装。我使用 InstallScriptLaunchAppAndWait()函数来做到这一点。所以,我的问题是 - 我如何使用相对路径来做到这一点?

例如:

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

1 回答 1

1

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

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

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

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

于 2013-07-30T12:11:39.383 回答