Мы используем Install4J для нашей текущей версии нашего программного обеспечения и бесшумно устанавливаем MySQL 5.1 во время установки.Как (тихо) удалить MySQL на 32 и 64 бит Windows
Для следующей версии нашего программного обеспечения, если это обновление, я хочу удалить MySQL 5.1 и установить 5.5. В идеале, удаление должно идти молча, но не является жестким требованием. Мне удалось получить его работу на 32-битной Windows XP, но не на 64-битной ОС Windows 7. Это то, что я до сих пор:
String[] uninstallKeys = WinRegistry.getSubKeyNames(RegistryRoot.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
for(String uninstallKey : uninstallKeys)
{
Object displayVersion = WinRegistry.getValue(RegistryRoot.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + uninstallKey, "DisplayVersion");
Object displayName = WinRegistry.getValue(RegistryRoot.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + uninstallKey, "DisplayName");
if(displayVersion != null && displayVersion.toString().equals(installedMysqlVersion)
&& displayName != null && displayName.toString().startsWith("MySQL Server"))
{
Util.logInfo(null, "Found match, uninstall key: " + uninstallKey);
context.setVariable("mysqlUninstallKey", uninstallKey);
break;
}
}
Это поместит код продукта MySQL Server 5.1 в mysqlUninstallKey
переменная. После этого шага, у меня есть 'Запуск исполняемого или пакетный файл' шаг со следующими параметрами:
- Executable: msiexec.exe
- Working Directory: $ {инсталлятор: sys.system32Dir}
- Аргументы:/I {installer: mysqlUninstallKey}
Это будет (в 32-разрядной Windows XP) запустить установщик сервера MySQL, а затем пользователь должен выбрать «удалить» вручную.
В 64-разрядной версии Windows 7 отображается только диалоговое окно с указанием всех флагов командной строки и их объяснений, поэтому msiexec.exe запускается, но аргумент, который я передаю, не распознается.
Любая идея, что может быть неправильным? Или, может быть, я делаю это совершенно неправильно, и есть лучший способ?
Я использую Install4j 4.2.8.
Чтобы удалить старую версию, используйте 'msiexec.exe/qn/x {целевой код продукта}'. –