Visual studio 2017 VS2017安装程序项目-无法使卸载程序

Visual studio 2017 VS2017安装程序项目-无法使卸载程序,visual-studio-2017,windows-installer,installation,visual-studio-setup-proje,Visual Studio 2017,Windows Installer,Installation,Visual Studio Setup Proje,我已经能够使用Visual Studio Community 2017上的安装程序项目成功安装一个简单的程序。但是,我不知道如何为最终用户创建一个完全工作的可部署卸载程序 安装程序项目设置为仅在C:\Program Files中创建应用程序文件夹。。。使用程序.exe,而不是其他。这是成功的。我想要一个安装程序,因为以后我计划在安装时制作一些注册表项 为了测试卸载,我使用卸载选项运行了安装程序项目生成的原始.exe文件。这会删除应用程序文件夹,但不会从Windows中的“添加/删除程序”列表中删

我已经能够使用Visual Studio Community 2017上的安装程序项目成功安装一个简单的程序。但是,我不知道如何为最终用户创建一个完全工作的可部署卸载程序

安装程序项目设置为仅在C:\Program Files中创建应用程序文件夹。。。使用程序.exe,而不是其他。这是成功的。我想要一个安装程序,因为以后我计划在安装时制作一些注册表项

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

我试图完全从添加/删除程序列表中卸载,但随后出现错误: C:\WINDOWS\system32\msiexec.exe Windows无法访问指定的设备、路径或文件。您可能没有访问该项目的适当权限

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

注: 操作系统:Windows 10 使用Visual Studio 2017社区 查看应用程序文件夹,其中既没有安装也没有卸载.exe文件。安装程序Project.exe仅位于原始生成位置,我找不到如何在应用程序文件夹中获取副本,也不确定那里的副本是否有效。 我已尝试将安装程序项目配置为x86和x64,没有任何更改。 我尝试过使用调试和发布构建配置,没有任何更改

环顾四周,WiX似乎有更多的功能和灵活性,但我还没有深入研究。有更简单的解决办法吗?
这个问题有没有发生在其他人身上?我希望安装程序项目是学习和处理安装的简单方法。

安装和卸载是事务性的,它们要么完全工作,要么完全回滚。如果您执行卸载,但条目仍保留在“添加/删除程序”中,则很可能卸载实际上不起作用

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

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

除了特权之外,从正在运行的已安装程序中卸载往往不会很好地工作,因为卸载过程无法删除正在运行的程序或其文件夹,因为它正在使用中。因此,虽然您可以让它与elevation一起工作,但您可能会发现您的程序及其文件夹在下次重新启动之前都被留下了。如果人们真的想这样做,其中一个策略是将卸载程序复制到temp文件夹中,并异步启动它,以便删除所有内容

从添加/删除程序和功能中卸载通常可以正常工作。如果没有上下文,错误消息就没有多大意义。它不是来自Windows Installer的消息,所以它可能来自自定义操作。否则,这可能是测试机器特有的问题

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


这些问题似乎都与您选择的工具无关。它们都会创建MSI文件,如果MSI设计不是最优的,那么使用什么工具都无关紧要。WiX并没有什么问题,但与VisualStudio相比,安装几个文件简直是小巫见大巫

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

使用windows开始按钮键入Remove时,出现的默认项是“系统设置”中的“添加或删除程序”。这看起来像是windows 10。当您单击该按钮时,它会将您转发到“应用和功能”窗口。我现在了解到,出于某种原因,它的功能与控制面板win不同 道指。或者它的权限较低,尽管我是这台计算机的管理员和唯一用户

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


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

95%确定这是出于设计,Windows希望用户通过“添加/删除程序”小程序激活卸载程序,但在手动启动安装程序时没有给予足够的注意。感谢详细的回复!我可能已经找到了答案:正如您所提到的,非msi设置需要安装和卸载程序,而msi设置使用Windows API来处理此问题。嗯,我意识到有两个由安装程序项目生成的文件,一个exe和一个msi,我一直在单击exe。当我使用提升的权限从msi安装和卸载时,一切正常。再次感谢您的指导。语法是msiexec/x{productcode}而不是包代码。