Удалить строку из реестра всегда одинаково?
Мне просто нужно немного заверения здесь. Я создаю основную программу на C#, которая, помимо прочего, будет удалять и переустанавливать самую последнюю версию программы (я не могу встроить эту функцию в саму программу). Я делаю это так:
MsiExec.exe /X{[UninstallString]} /passive
в процессе командной строки. У меня есть пара вопросов:
- Очевидно, что вы не знаете историю программы (я тоже не говорю вам правду), но разве эта строка удаления обычно одинакова каждый раз для каждой версии? Это изменится?
- Есть ли какой-нибудь возможный способ, которым строка удаления могла бы случайно быть строкой другой программы на другом компьютере? Я не хочу ничего удалять.
По сути, я просто хочу знать, безопасно ли это. Если нет, или если есть лучший способ сделать это программно, дайте мне знать! Спасибо!
1 ответ
Смотрите "Удалить продукт"; Вы можете указать ProductCode, который по определению является глобально уникальным. Таким образом, вы не будете удалять любой другой продукт. Вы также можете указать имя файла msi, но вы должны быть более осторожны, так как может случиться, что разные продукты получат одно и то же имя файла. Поэтому использование ProductCode - лучший способ сделать это.
См. Также Для чего используются коды обновления, продукта и упаковки?