Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
Visual studio 在MSI卸载过程中删除文件后,如何运行自定义操作?_Visual Studio_Windows Installer_Visual Studio Addins - Fatal编程技术网

Visual studio 在MSI卸载过程中删除文件后,如何运行自定义操作?

Visual studio 在MSI卸载过程中删除文件后,如何运行自定义操作?,visual-studio,windows-installer,visual-studio-addins,Visual Studio,Windows Installer,Visual Studio Addins,在卸载我正在编写的Visual Studio集成软件包期间,我需要运行“devenv.exe/setup”来更新VS UI,并从启动/帮助屏幕中删除软件包信息 但是,它必须在删除所有外接程序和程序包文件后运行。我当前的设置(使用卸载步骤中调用的安装程序类自定义操作)导致devenv.exe在文件实际删除之前过早运行。这意味着启动屏幕信息不会更新 有什么想法吗?我只需要在安装结束时运行devenv,不知何故-我没有绑定到自定义操作。您可以将自定义操作编写为提交执行。这意味着它将仅在成功卸载后运行。

在卸载我正在编写的Visual Studio集成软件包期间,我需要运行“devenv.exe/setup”来更新VS UI,并从启动/帮助屏幕中删除软件包信息

但是,它必须在删除所有外接程序和程序包文件后运行。我当前的设置(使用卸载步骤中调用的安装程序类自定义操作)导致devenv.exe在文件实际删除之前过早运行。这意味着启动屏幕信息不会更新


有什么想法吗?我只需要在安装结束时运行devenv,不知何故-我没有绑定到自定义操作。

您可以将自定义操作编写为提交执行。这意味着它将仅在成功卸载后运行。将它作为“代码>删除”=“ALL”<代码>以确保它只在卸载时运行。

< P>,结果是,使用MS的新部署工具基础将我的托管函数封装到非托管DLL中,完全避开安装程序类。然后,我使用Orca(MSI编辑器)在安装中的特定时间添加自定义操作


Installer类只支持“延迟”自定义操作,这些操作必须在特定时间运行。

这似乎不起作用。我在提交(安装)期间已经在使用我的安装程序类,当它在回滚时运行,它会在删除文件之前运行。你说的“回滚”是什么意思?只有在安装过程中出现错误并且MSI必须撤消对系统所做的所有更改时,才会发生回滚。这与卸载不同--您是在谈论回滚还是卸载?是的,您应该添加延迟的自定义操作,并且可能在InstallFinalize之前添加自定义操作,这将结束在InstallInitialize启动的安装事务。只有在此事务中进行系统更改,才能在发生错误时允许正确的系统回滚。确保您的自定义操作实际报告了一个准确的返回代码,以指示成功或错误。这将使设置在必要时回滚,或者在一切正常时完成。不要添加在InstallFinalize之后对系统进行更改的自定义操作,否则可能导致MSI卸载失败。