2

我已经创建使用Visual Studio安装程序(Visual Studio安装项目)为MyProgram的安装空文件夹后面的树叶。它被称为“MyProgram Setup.msi”。它安装的程序很好,如果使用控制面板将其卸载,那么所有东西都会被删除。我已经为MyProgram的安装,但卸载快捷方式,它会创建

的问题是,我想一个快捷方式添加到“用户的程序菜单”称为“卸载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采取 “/卸载” 命令行参数来运行 “MSIEXEC.EXE /卸载{MyGUID}” 和退出本身。与此相似的解决方案:http://www.codeproject.com/KB/install/DeployUninstall.aspx

这些尝试都没有创建一个快捷方式,可以卸载的程序以及程序的基本文件夹。我不想切换到其他安装程序产品,如Inno Setup,NSIS或WiX。

回答

0

看来这是Visual Studio安装程序中的一个错误。我决定改用WiX。它能够创建具有正确功能的卸载快捷方式。

0

如果因任何原因手动运行msiexec /x {MyGUID}不会删除所有文件夹,然后将它与您的设置或东西你做你的应用程序的问题。

有关创建与WiX的卸载快捷方式的更多信息,请this blog post其进入相当多的细节。根据博客文章中显示的信息,您应该能够制定出如何坚持现有技术,并在您提到的(2)方法中使用一些变体。

+0

我已经创建了一个干净的新程序来测试它是否是我的设置或程序的问题。该程序是TestProgram.exe,它是一个Windows窗体应用程序,根本没有添加任何代码。安装程序是Setup1.msi。卸载快捷方式导致应用程序文件夹中的Uninstall.bat文件。您可以安装并使用此快捷方式卸载,而无需运行TestProgram.exe。尽管如此,卸载快捷方式仍留下2个空文件夹。 – Coder7862396 2010-05-31 05:09:07

+0

Uninstall.bat在软件包中是否正确?因此它是* IN USE *当卸载发生时,所以无法删除文件夹 – saschabeaumont 2010-05-31 23:19:31

+0

好的,这是有道理的。但是,如果我使用#2方法,并编辑MSI以添加msiexec.exe的快捷方式,那么程序包或程序文件夹中没有额外内容,并且在卸载过程中唯一使用的是msiexec.exe。即使使用这种方式也不能解决问题。 – Coder7862396 2010-06-01 00:19:44

相关问题