Я создал установщик для MyProgram с помощью установщика Visual Studio (проект установки Visual Studio). Он называется «MyProgram Setup.msi». Он отлично устанавливает программу, и если она удалена с панели управления «Установка и удаление программ», тогда все будет удалено так, как должно быть.Я создал установщик для MyProgram, но удаленный ярлык, который он создает, оставляет за пустыми папками.
Проблема заключается в том, что я хочу добавить ярлык в «Меню программ пользователя» под ярлыком программы под названием «Удаление MyProgram». Я попытался сделать это тремя разными способами, и в все 3 пути, если MyProgram удаляется с помощью этого ярлыка, удаление будет оставить 2 пустые папки («... Program Files \ MyCompany \» и «... Program Files \ MyCompany \ MyProgram \ ").
Вот 3 способа, что я пытался сделать деинсталлятор ярлык:
1) Ярлык пакетный или файл сценария
Uninstall 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
Я добавил ярлык записи в таблице Shortcut. Деинсталляция работала, но при использовании этого ярлыка она по-прежнему оставалась позади двух пустых папок.
3) Из кода в MyProgram.exe
Я изменил MyProgram.exe принять "/ удалить" параметр командной строки для запуска "msiexec.exe/удаление {MyGUID}" и выйти из себя. Аналогично этому решению: http://www.codeproject.com/KB/install/DeployUninstall.aspx
Ни одна из этих попыток не создала ярлык, который может удалить программу, а также базовые папки программы. Я не хочу переключаться на какой-либо другой продукт установщика, такой как Inno Setup, NSIS или WiX.
Я создал чистую новую программу для тестирования, если это проблема с моей установкой или программой. Программа TestProgram.exe, которая является приложением Windows Forms, без добавления кода к нему. Настройка - Setup1.msi. В ярлыке удаления содержится файл Uninstall.bat, который находится в папке «Приложение».Вы можете установить, а затем удалить с помощью этого ярлыка без запуска программы TestProgram.exe. Тем не менее, ярлык удаления остается за двумя пустыми папками. – Coder7862396
. Неверный номер в пакете правильно? Поэтому при удалении происходит * IN USE *, и поэтому папки не могут быть удалены. – saschabeaumont
Хорошо, это имеет смысл. Но если я использую вместо этого метод # 2 и отредактирую MSI, чтобы добавить ярлык к msiexec.exe, то нет ничего лишнего в папке пакета или программы, и единственной вещью, используемой во время удаления, будет msiexec.exe. Даже использование этого способа не решает проблему. – Coder7862396