2015-08-24 2 views
0

У меня есть установщик MSI, завернутый в exe-файл DotNetInstaller. Все работает нормально, но когда я пытаюсь удалить его из окна «Добавить/Удалить», он не запускает .exe-файл, а .msi. Мне действительно нужен .exe для запуска, потому что я передаю значения свойств как uninstall_cmdparameters. Пожалуйста, помогите.Запустить пользовательский деинсталлятор для созданного DotNetInstaller EXE

Заранее спасибо.

+0

Когда ваш продукт установлен с использованием пакета msi, я предполагаю, что он создает запись для себя в апплете добавления и удаления программ. Чтобы создать эту запись в апплете добавления и удаления программ, запись реестра будет создана в HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall (для 32-разрядных инсталляторов) или HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall (для 64-разрядных инсталляторов). В этом разделе реестра будет указано «Имя», называемое «UninstallString». Какова ценность, связанная здесь? –

+0

Это просто: «MsiExec.exe/x [ProducCode]" – p4bl0

ответ

0

ОК, после битвы за 4 дня с этим bullsh * t, я наконец-то придумал что-то.
Я запускаю C# Custom Action перед окончанием установки, а затем обновляю разделы реестра в Uninstall [ProductCode]:

строка UNINSTALL_REGKEY = @ "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \"; string productCode = session ["ProductCode"];

Registry.SetValue (UNINSTALL_REGKEY + productCode, "UninstallString", "MsiExec.exe/x" + productCode + "DELFILES = TRUE", RegistryValueKind.String);
Registry.SetValue (UNINSTALL_REGKEY + код продукта, «WindowsInstaller», 0, RegistryValueKind.DWord);
(Примечание: значение в WindowsInstaller должно быть установлено равным 0 в противном случае он не будет использовать значение UninstallString в)

Теперь, когда я удалить свой продукт из Add/Remove Programs деинсталляция запускается с моей модифицированной UninstallString.

Надеюсь, что это поможет другим людям с той же проблемой.

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