2014-01-22 3 views
1

У меня есть C# приложение, установленное с помощью InstallShield оценки версии 2013, и я хочу, чтобы удалить его из другого приложения C#Uninstall C# приложение - InstallShield пробная версия


Я запустить процесс, чтобы удалить его, как это:

p.StartInfo.FileName = "msiexec.exe";

  p.StartInfo.UseShellExecute = false; 
      p.StartInfo.Arguments = "/x {XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"; 
      p.Start(); 

И результат является сообщением об ошибке:

"Акция действует только для продуктов, которые в настоящее время установлены"

Продукт устанавливается с помощью InstallShield Trial Version , Если я установил продукт с ограниченной установкой InstallShield, процесс удаления будет выполнен отлично.


Это проблема, потому что это оценочная версия, или мне не хватает чего-то еще?

ответ

0

Если GUID продукта изменился между версиями InstallShield (что очень вероятно, если вы позволите ему создать GUID по умолчанию), то, вероятно, он ищет старый GUID в реестре для удаления. Возможно, вам придется вручную очистить старую запись реестра. Есть информация о том, что это here.

0

Скорее всего, у вас неправильный GUID, как указывает Джефф. Вы можете найти несколько способов найти правильный ответ в этом вопросе о том, как удалить MSI: MSI uninstall details. Или еще лучше, идите прямо к этому ответу на вопрос, как найти GUID продукта для вашей установки: How can I find the product GUID of an installed MSI setup?

Я хотел бы также попытаться построить командную строку в коде, сериализации его в строку и вручную попробовать его с помощью Msiexec. exe в командном окне, чтобы проверить его достоверность. Это сложный, подверженный ошибкам интерфейс командной строки. Однако ваше сообщение об ошибке указывает на неправильный идентификатор GUID.

Наконец: Вместо вызова msiexec.exe в командной строке, вы можете использовать DFT - Deployment Tools Foundation который является .NET обертка для API Win32 Windows Installer. Нет командной строки для сборки или кодов ошибок для проверки, просто прост в использовании классов .NET для решения всех аспектов MSI. Это позволит вам выполнить деинсталляцию с помощью кода, который правильно поддерживает обработку исключений. DTF распространяется как часть Wix, как описано here. См. this post на сайте serverfault.com (сайт системного администратора) для лучшего изложения различных подходов. И посмотрите пример фрагмента кода C# для его использования в MSI uninstall details.

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