2015-02-26 2 views
0

У меня есть приложение, которое установит другое приложение. Это легко сделать, запустив setup.exe этого приложения с помощью ShellAPI в моей программе.Откройте мастер удаления приложения для InstallAware

Однако, если это внешнее приложение уже существует, я хотел бы сначала удалить его. Я могу сделать это сам, открыв панель управления, найдя приложение, а затем некоторые опции меню «Удалить» или «Восстановить». При нажатии на один из них откроется мастер InstallAware для этого приложения.

Могу ли я запустить этот мастер из своего приложения? Пользователю все равно придется щелкнуть и подтвердить все, но я пытаюсь объединить шаги, необходимые для удаления и переустановки новой/новой версии этого внешнего приложения. Я не могу найти что-то вроде uninstall.exe для запуска. Что выполняется с помощью ссылки на панели управления для удаления приложения?

+0

Используя диспетчер задач, я смог найти, что application.exe для InstallAware находится в виде 'C: \ ProgramData \ {170EC0AA-F47B-478E-9124-108BF7C47E71}'. Если я просто запустил этот EXE, откроется деинсталлятор. Как это определяется и создается? Существует несколько папок с таким GUID. Как я могу определить, какой из них мне нужен? – ikathegreat

+0

Вы можете получить эту информацию из реестра: http://stackoverflow.com/questions/10122761/where-are-all-possible-locations-of-uninstallstring-registry-entries –

+1

Вид зависит от технологии установки, используемой другое приложение. Вам нужно будет больше узнать об этом. Что делать, если версия установлена ​​более поздней, чем версия, которую вы поставляете. Вашим пользователям не понравится, что вы удалили версию N + 1 и заменили версией N. Что делать, если пользователь хочет сохранить обе версии N и N + 1. Я не думаю, что кто-нибудь может дать вам подробный совет, пока у вас не будет более подробной информации. –

ответ

1

Вы можете найти список установленных приложений под ключ реестра,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 

Каждое приложение имеет свой собственный суб-ключ, так что вы должны найти правильный. Затем информация об удалении сохраняется под значением UninstallString.

Существует также возможность того, что приложение установлено под ключом HKEY_CURRENT_USER.

Однако я бы не рекомендовал вам самостоятельно выполнять установку, если у вас нет определенной причины для этого. Любой достойный установщик должен иметь возможность выполнить обновление существующей установки, поэтому достаточно позвонить setup.exe.

+0

Спасибо за понимание. К сожалению, эти установщики имеют определенную версию, а установка более новой версии поддерживает более старую версию на ПК и в списке программ панели управления, поэтому я разместил этот вопрос. – ikathegreat

+0

@ikathegreat Мне показалось странным, что вы отклонили ответ Dalijas, просто комментируя ее последний абзац, в то время как фактический ответ на ваш вопрос находится в первых абзацах. Uninstallstring сообщает вам, как запустить мастер удаления. Прежде чем вы обратитесь к деинсталлятору, вы можете проверить DisplayVersion. Вам нужно пройти через узлы в кусте Uninstall, чтобы найти приложение, которое вы ищете (или все его версии), но это именно то, что делает апплет панели управления. –

+0

Я вижу, почему запуск новой настройки не решит вашу проблему. Я немного изменил свою рекомендацию о том, чтобы не делать самостоятельную установку, но я решил оставить ее частью ответа в качестве руководства для других, которые могут быть в несколько иной ситуации. Во всяком случае, решение вашей проблемы в первой части моего ответа. –