如果您编写自定义引导程序应用程序,则可以执行您所描述的操作。但是,wixstdba 中没有内置任何东西可以在应用链后读取注册表。我猜您使用的是 wixstdba,因为它内置了 LaunchTarget 的概念。
为了解决这个问题,我建议使用一个变量来存储安装文件夹(也许调用它InstallFolder
)并通过一个MsiProperty
元素将该值从 wixstdba 传递到 .msi 文件。就像是:
<!-- Default InstallFolder to something -->
<Variable Name='InstallFolder' Value='[ProgramFilesFolder]MySetup' />
<!-- Pass InstallFolder to the MSI -->
<MsiPackage ...>
<MsiProperty Name='INSTALLFOLDER' Value='[InstallFolder]' />
</MsiPackage>
然后您可以将 LaunchTarget 设置为:
<Variable Name='LaunchTarget' Value='[InstallFolder]\MyExe.exe' />