Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MSI.DLL以编程方式安装.MSI文件并提供中止/取消?_C#_.net_Interop_Windows Installer - Fatal编程技术网

C# 如何使用MSI.DLL以编程方式安装.MSI文件并提供中止/取消?

C# 如何使用MSI.DLL以编程方式安装.MSI文件并提供中止/取消?,c#,.net,interop,windows-installer,C#,.net,Interop,Windows Installer,为了在通过下载的.msi文件更新应用程序时提供自定义的、外观更友好的UI,我必须提供一个自定义(WPF,如果有必要)窗口,该窗口将通过互操作调用msi.DLL函数来复制msiexec正在做的事情 最初,它是一个针对下载的.msi文件的简单msiexec调用,如果它能保持这么简单就好了 我还需要像msiexec一样提供取消功能 通过MSI.DLL函数以编程方式启动/停止/中止此操作的正确方法是什么 (我所做的是查看不同的MSI互操作实现,包括WiX,但无法轻松识别用于执行此操作的API) 这就是M

为了在通过下载的.msi文件更新应用程序时提供自定义的、外观更友好的UI,我必须提供一个自定义(WPF,如果有必要)窗口,该窗口将通过互操作调用msi.DLL函数来复制msiexec正在做的事情

最初,它是一个针对下载的.msi文件的简单msiexec调用,如果它能保持这么简单就好了

我还需要像msiexec一样提供取消功能

通过MSI.DLL函数以编程方式启动/停止/中止此操作的正确方法是什么


(我所做的是查看不同的MSI互操作实现,包括WiX,但无法轻松识别用于执行此操作的API)

这就是MSI所称的“外部UI处理程序”。有关详细信息,请参阅MSI SDK,例如“使用MsiSetExternalUI监视安装”。

查看WiX的新Burn功能。。。您是否看过
MsiEndTransaction
函数?以下是一篇LINQ到MSI的帖子,您可以根据自己的需要进行调整(这比启动msiexec进程更高级):