2

Я создал установщик для 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.

ответ

0

Кажется, что это ошибка в установщике Visual Studio. Вместо этого я решил использовать WiX. Он может создать ярлык удаления с правильной функциональностью.

0

Если по какой-либо причине ручной запуск msiexec /x {MyGUID} не удаляет все папки, это проблема с вашей настройкой или чем-то, что вы делаете в своем приложении.

Для получения дополнительных сведений о создании ярлыка для удаления с помощью WiX, ознакомьтесь с this blog post, который идет довольно подробно. Основываясь на информации, приведенной в сообщении в блоге, вы должны иметь возможность определить, как придерживаться существующей технологии и использовать некоторые варианты метода (2), который вы упомянули.

+0

Я создал чистую новую программу для тестирования, если это проблема с моей установкой или программой. Программа TestProgram.exe, которая является приложением Windows Forms, без добавления кода к нему. Настройка - Setup1.msi. В ярлыке удаления содержится файл Uninstall.bat, который находится в папке «Приложение».Вы можете установить, а затем удалить с помощью этого ярлыка без запуска программы TestProgram.exe. Тем не менее, ярлык удаления остается за двумя пустыми папками. – Coder7862396

+0

. Неверный номер в пакете правильно? Поэтому при удалении происходит * IN USE *, и поэтому папки не могут быть удалены. – saschabeaumont

+0

Хорошо, это имеет смысл. Но если я использую вместо этого метод # 2 и отредактирую MSI, чтобы добавить ярлык к msiexec.exe, то нет ничего лишнего в папке пакета или программы, и единственной вещью, используемой во время удаления, будет msiexec.exe. Даже использование этого способа не решает проблему. – Coder7862396

Смежные вопросы