MsiExec.exe идентификатор продукта удалить
Как показано на рисунке, я получил строку удаления приложения.
И это код, который я пытаюсь удалить из приложения.
uninstlString = Convert.ToString(subkey.GetValue("UninstallString"));
if (uninstlString.Contains("MsiExec.exe"))
{
//Console.WriteLine(uninstlString);
//Console.ReadLine();
string args = "/x{" + uninstlString.Split("/".ToCharArray())[1].Split("I{".ToCharArray())[2];
//string prdctId = uninstlString.Substring(12);
uninstallProcess.StartInfo.FileName = uninstlString.Split("/".ToCharArray())[0];
uninstallProcess.StartInfo.Arguments = args;
uninstallProcess.StartInfo.UseShellExecute = false;
uninstallProcess.Start();
uninstallProcess.WaitForExit();
}
Но после запуска этого кода... он говорит, что индекс выходит за пределы диапазона... Может кто-нибудь помочь мне с кодом?
1 ответ
Пожалуйста, смотрите мой ответ в двойном вопросе: Удаление программы.
MSI API: вместо того, чтобы манипулировать строками, используйте MSI API для удаления с помощью автоматизации COM. Я не уверен, каков ваш сценарий, нам нужно знать больше о том, какова ваша цель. Очень часто есть альтернативные способы сделать вещи, которые делают всю операцию менее рискованной.
Удаление по названию продукта: если вам известно только название продукта, который вы хотите удалить, то, возможно, посмотрите, как вы можете использовать MSI API для его удаления здесь: есть ли альтернатива GUID при использовании msiexec для удаления приложения?
Другие способы удаления: Существует также множество других способов удаления: удаление файла MSI из командной строки без использования msiexec.
Некоторые ссылки:
- WIX (удалить все предыдущие версии) (удалить по коду обновления или коду продукта)
- Wix: Получить каталог по пути к файлу (найти правильный продукт по сканированию строки имени продукта)