我的MSI安装程序中嵌入了一个.exe,我希望以某种方式直接从安装程序调用,然后再安装“安装文件”。行动发生。
它的定义如下:
app.controller('MainPreferences', function($scope, AppData){
// when this gets executed, appData is null
$scope.appData = AppData.getAppData();
});
但是在查看日志时,看起来它(试图)从安装目的地调用。
这样的事情可能吗?
答案 0 :(得分:2)
这是可能的,但以不同的方式。 “运行EXE”类型的自定义操作将始终在目标系统上搜索可执行文件。因此,如果您的可执行文件与您的应用程序一起安装,则它不是一个选项。
这是另一种方式:
首先,请将您的EXE改为<Binary>
。
就像<Binary Id="MyEXE" SourceFile="PATH\TO\EXE" />
一样简单。
添加DLL延迟自定义操作,该操作将提取二进制文件,使用参数运行并随后清理。
This post可以让您了解如何使用C#和DTF提取二进制文件。此外,如果您需要传递参数,请务必执行the right way for deferred custom action。
最后,请记住,每个延迟的自定义操作(即更改目标系统的操作)必须具有相应的rollback action。 This article可能会为您提供有关如何测试自定义操作的直接和回滚行为的一些提示。