我使用Visual Studio Installer(Visual Studio安装项目)为MyProgram创建了一个安装程序。它被称为“MyProgram Setup.msi”。它安装程序很好,如果使用添加/删除程序控制面板卸载它,那么一切都会被删除。
问题是我想在名为“卸载MyProgram”的程序快捷方式下添加“用户程序菜单”的快捷方式。我已尝试以3种不同方式执行此操作,并且所有3种方式如果使用该快捷方式卸载MyProgram,卸载将留下2个空文件夹(“...程序Files \ MyCompany \“和”... Program Files \ MyCompany \ MyProgram \“)。
以下是我尝试制作卸载程序快捷方式的3种方法:
1)批处理或脚本文件的快捷方式
卸载MyProgram.bat:
@ECHO OFF
msiexec /uninstall {MyGUID}
卸载MyProgram.vbs:
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("START /B msiexec /uninstall {MyGUID}")
Set objShell = Nothing
2)使用Orca.exe编辑MSI文件
我使用本指南了解了如何执行此操作:http://www.codeproject.com/KB/install/MSIShortcuts.aspx
我将快捷方式条目添加到快捷方式表中。卸载工作正常但在使用此快捷方式时仍然留在2个空文件夹中。
3)来自MyProgram.exe中的代码
我修改了MyProgram.exe以获取“/ uninstall”命令行参数来运行“msiexec.exe / uninstall {MyGUID}”并退出。与此解决方案类似:http://www.codeproject.com/KB/install/DeployUninstall.aspx
这些尝试都没有创建可以卸载程序的快捷方式以及程序的基本文件夹。我不想切换到其他安装程序产品,如Inno Setup,NSIS或WiX。
答案 0 :(得分:0)
如果由于某种原因手动运行msiexec /x {MyGUID}
并未删除所有文件夹,那么您的设置或您在应用程序中执行的操作就会出现问题。
有关使用WiX创建卸载快捷方式的详细信息,请查看this blog post,其中包含相当多的详细信息。根据博客文章中显示的信息,您应该能够找到如何坚持现有技术并使用您提到的(2)方法的一些变体。
答案 1 :(得分:0)
这似乎是Visual Studio Installer中的一个错误。我决定改用WiX。它能够创建具有正确功能的卸载快捷方式。