Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Build MSI生成卸载-未删除已安装目录_Build_Msbuild_Installshield_Windows Installer - Fatal编程技术网

Build MSI生成卸载-未删除已安装目录

Build MSI生成卸载-未删除已安装目录,build,msbuild,installshield,windows-installer,Build,Msbuild,Installshield,Windows Installer,我为我们的应用程序创建了MSI构建包。在此安装之后,我们在单独的过程中触发了另一个独立的驱动程序软件,在安装程序类的提交事件中,如下所示 进程启动(“驱动程序软件路径”) 我们面临一个问题,已安装目录(为空)文件夹在取消安装时未被删除。实际上,与安装一样,我们通过覆盖installer类的卸载方法,在单独的过程中触发了从属驱动程序软件的卸载 任何人,请帮助我克服这个问题?如何删除已安装的目录 我无法更改安装过程,因为我们知道,当另一个安装正在进行时,我们无法处理另一个安装/取消安装 您正在MSI

我为我们的应用程序创建了MSI构建包。在此安装之后,我们在单独的过程中触发了另一个独立的驱动程序软件,在安装程序类的提交事件中,如下所示

进程启动(“驱动程序软件路径”)

我们面临一个问题,已安装目录(为空)文件夹在取消安装时未被删除。实际上,与安装一样,我们通过覆盖installer类的卸载方法,在单独的过程中触发了从属驱动程序软件的卸载

任何人,请帮助我克服这个问题?如何删除已安装的目录


我无法更改安装过程,因为我们知道,当另一个安装正在进行时,我们无法处理另一个安装/取消安装

您正在MSI中运行非MSI驱动程序安装EXE?正确吗?或者它可能是一个封装在EXE中的MSI

您有Installshield Premier吗?您是否可以在MSI安装之前(或之后)使用套件项目并通过引导程序安装EXE?老实说,我从未使用过这个功能,但按顺序运行设置才是它的目的。MSI文件中嵌入的自定义操作启动EXE文件是出了名的不可靠。在我看来,如果您同时使用托管代码运行(我认为您是这样的),这一点尤其正确

从长远来看,托管代码可能会生成更安全的自定义操作代码(基于安全性),但目前它似乎会导致不必要的运行时依赖关系,尤其是针对不同Windows版本(Vista、7、8、10)的大规模分发(全局分发)

有人告诉我,要适应Installshield的套件功能需要一段时间,但也许这对你来说更好?您可以依次运行EXE文件、MSI文件、修补程序和ZIP。我猜有些人在定义卸载和升级行为,还有很多测试。我敢肯定,企业应用程序打包人员会很高兴看到一个套件,而不是一个内嵌了很多奇怪东西的MSI

更新:编译套件setup.exe文件后,可以按如下所述提取该文件:


或者,您可以尝试提取驱动程序安装程序的setup.exe文件,并将驱动程序作为常规MSI组件安装,然后运行以安装/卸载驱动程序(来自的工具)。也相当笨重-特别是当你需要包括卸载

您的驱动程序安装程序可能已经使用了DPInst.exe。我会检查是否可以从EXE中提取MSI,并使用它而不是EXE将其包含在套件项目中。有关如何处理setup.exe文件(提取、运行时参数等)的一些提示:


WiX在它的一个扩展中具有处理驱动程序安装的功能。我从来没有机会测试过它。

你能发布安装日志吗?文件夹与哪个组件关联在日志中搜索它。它可能会提供一些线索,说明为什么它没有移除它。如果您正在寻找暴力修复,可以在InstallFinalize之后将自定义操作添加到安装程序的末尾,这将删除文件夹。这不是放置CA的正确位置。也可以尝试使用RemoveFile表,而不是诉诸自定义操作。解决组件规则问题可能会解决这个问题。