VS2017安装程序项目 - 无法生成卸载程序

时间:2018-02-19 23:53:29

标签: visual-studio-2017 windows-installer installer visual-studio-setup-proje

我已经能够使用Visual Studio Community 2017上的Installer Project成功安装一个简单的程序。但是,我无法找到如何为最终用户创建一个完全可用的可部署卸载程序。

安装程序项目设置为仅使用Program .exe创建应用程序文件夹(在C:\ Program Files ...中),而不是其他任何内容。这成功了。我想要一个安装程序,因为稍后我打算在安装时制作一些注册表项。

为了测试卸载,我运行了安装程序项目使用“卸载”选项构建的原始.exe文件。这将删除应用程序文件夹,但不会从Windows中的“添加/删除程序”列表中删除该程序 - 这让我相信还有其他一些尚未删除的注册表项。

我试图纯粹从添加/删除程序列表中卸载,但后来我收到错误: C:\ WINDOWS \ SYSTEM32 \ MSIEXEC.EXE “Windows无法访问指定的设备,路径或文件。您可能没有相应的权限来访问该项目。”

在Visual Studio中,我可以从安装程序项目右键单击菜单中单击“卸载”,该菜单会成功删除“应用程序文件夹”和“添加/删除程序项”,但这不是可部署的解决方案。

注意: 操作系统:Windows 10 使用Visual Studio 2017社区 查看应用程序文件夹,其中既没有安装也没有卸载.exe文件。安装程序项目.exe仅在原始构建位置,我找不到如何在应用程序文件夹中获取副本(不确定副本是否有效)。 我尝试将安装程序项目配置为x86和x64而不做任何更改。 我尝试过使用Debug和Release构建配置而没有任何变化。

从环顾四周看,WiX似乎有更多的功能和灵活性,但我还没有挖掘它。有更简单的解决方案吗? 这个问题是否发生在其他人身上?我希望Installer Projects是学习和处理安装的简单方法。

2 个答案:

答案 0 :(得分:1)

看起来我在上面的评论中得出结论,但我认为我发现了问题:我无法从Windows Apps&系统设置中的功能窗口,但从控制面板\程序\程序和功能卸载工作正常。

使用Windows开始按钮键入“删除”时,出现的默认项目是“系统设置”中的“添加或删除程序”(这看起来像Windows 10)。当您单击它时,它会转到“应用程序和功能”窗口。我现在正在了解它由于某种原因,它具有与控制面板窗口不同的功能。或者它可能具有较低的权限,尽管我是管理员且只有用户这台电脑......

因为它可以从控制面板卸载,我认为这将是首选解决方案。我对系统设置中其他窗口的假设是我真正的问题。我只是希望应用程序&功能窗口将其功能/权限与控制面板对齐。

我还了解到,当我在cmd中运行msiexec.ex / I {PACKAGEID}时,卸载成功。不确定这是多么相关,但在此记录。

答案 1 :(得分:0)

安装和卸载是事务性的,它们可以完全工作,也可以完全回滚。如果您执行卸载但该条目仍保留在“添加/删除程序”中,那么卸载实际上可能无法正常工作。

执行安装时,如果它具有UAC提升对话框,则安装将以提升运行并将文件/注册表项安装到禁止限制用户的位置。从这些位置删除文件也需要提升。您还没有准确说明卸载的工作原理,但很可能需要提升才能成功,并且您的程序没有提升。如果您的程序以静默方式卸载,则卸载将无提示失败,因此您的程序可能无法实际检查卸载是否有效。

我还猜测您的Visual Studio会话可能正在运行提升,因此从那里卸载工作正常。

除了权限之外,从正在运行的已安装程序中卸载往往效果不佳,因为卸载过程无法删除正在运行的程序或其文件夹,因为它正在使用中。因此,虽然您可以使其工作(具有提升),但您可能会发现您的程序及其文件夹在下次重新启动之前会被遗忘。如果人们真的想这样做,其中一个策略是将卸载程序复制到临时文件夹并异步启动它,这样就可以删除所有内容。

从“添加/删除程序”和“功能”中卸载通常可以正常工作。没有一些上下文,错误信息并不意味着什么。它不是来自Windows Installer的消息,因此它可能来自自定义操作。否则,它可能是测试机器特有的问题。

Windows Installer安装程序中从不存在卸载exe。删除产品时,系统只需调用Windows API即可删除产品。 Windows Installer是Windows操作系统的一部分,支持所有需要的API。只有非MSI设置才需要安装和卸载exe才能执行任何操作。

这些问题似乎与您选择的工具无关。它们都创建了MSI文件,如果MSI设计不是最佳的,那么使用什么工具并不重要。 WiX没有什么问题,但是要安装几个文件,与Visual Studio相比,它有点过分。