2015-07-10 90 views
0

我在我的MSI安装程序中嵌入了一个.exe文件,我希望以某种方式直接从安装程序中调用'InstallFiles'操作。WIX安装程序 - 可能在InstallFiles之前调用自定义操作.exe?

它的定义如下:

<CustomAction Id="LaunchInstallManager_TryUninstall" Return="ignore" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" ExeCommand="&quot;[#fil713F8F6A7BC9B98857D779B9B29873E1]&quot; /someargument"></CustomAction> 

<Custom Action="LaunchInstallManager_TryUninstall" Before="InstallFiles">NOT Installed</Custom> 

但在观看日志,它看起来像它的(要试图)从安装目的地调用。

这样的事情可能吗?

回答

1

这是可能的,但以不同的方式。 “运行EXE”类型的自定义操作将始终在目标系统上搜索可执行文件。因此,如果您的可执行文件与您的应用程序一起安装,它不是一个选项。

这里是另一种方式:

  • 首先,作者你的EXE为<Binary>代替。

    它就像<Binary Id="MyEXE" SourceFile="PATH\TO\EXE" />一样容易。

  • 添加一个DLL延迟自定义操作,该操作将提取二进制文件,然后使用参数运行它,然后进行清理。

    This post可以给你一个想法如何使用C#和DTF提取二进制文件。此外,如果您需要传递参数,请确保您执行此操作the right way for deferred custom action

最后,请记住,每个递延自定义操作(即改变目标系统中的一个),必须有相应的rollback actionThis article可能会为您提供一些关于如何测试自定义操作的直接和回滚行为的提示。

相关问题