我们使用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。