Я сделал установщик для MyProgram, но ярлык удаления, который он создает, оставляет пустые папки - PullRequest
2 голосов
/ 31 мая 2010

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

Ответы [ 2 ]

0 голосов
/ 07 июня 2010

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

0 голосов
/ 31 мая 2010

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

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

...