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

相關問題