如何(默默)32卸载MySQL和64位Windows(How to (silently) unins

2019-09-30 04:04发布

我们使用Install4J我们目前我们的软件版本,并在安装过程中安装MySQL 5.1默默。

对于我们的软件的下一个版本,如果是升级,我想删除的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服务器5.1的产品代码在mysqlUninstallKey变量。 这一步后,我有一个“运行可执行文件或批处理文件”的步骤以下设置:

  • 可执行文件:msiexec.exe的
  • 工作目录:$ {安装程序:sys.system32Dir}
  • 参数:/ I {安装程序:mysqlUninstallKey}

这将(在32位的Windows XP)运行MySQL服务器的安装程序,然后用户必须选择“删除”手动。

在64位的Windows 7,它只是显示出所有的命令行标志和他们的解释对话,所以msiexec.exe的正在启动,但我进入它的参数无法识别。

任何想法可能是错误的? 或者,也许我这样做完全错误的,有一个更好的办法?

我用Install4j 4.2.8。

Answer 1:

感谢@马库斯 - 亚当斯的评论,我想它了。 你需要使用“/ QN”,“/ X”和“{安装程序:mysqlUninstallKey}”在install4j的“运行可执行文件或批处理文件”行动单独的参数。 如果您使用1个参数用空格,这是行不通的。 有了这个它适用于32位和64位。



文章来源: How to (silently) uninstall MySQL on 32 and 64 bit Windows