Я создал установщик для MyProgram, используя установщик Visual Studio (проект установки Visual Studio). Это называется «MyProgram Setup.msi». Он прекрасно устанавливает программу, и если она удаляется с помощью панели управления Установка и удаление программ , то все удаляется, как и должно.
Проблема в том, что я хочу добавить ярлык в «Меню программ пользователя» под ярлыком программы под названием «Удалить MyProgram». Я попытался сделать это 3 различными способами и всеми 3 способами , если MyProgram удаляется с помощью этого ярлыка, при удалении останется 2 пустых папки ("... Program 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) Редактирование файла MSI с помощью Orca.exe
Я узнал, как это сделать, используя это руководство: 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.