void (String[] command) { String product = ApplicationNamesInfo.getInstance().getFullProductName().replace(' ', '-').toLowerCase(Locale.ENGLISH); String version = ApplicationInfo.getInstance().getFullVersion(); File file = new File(SystemProperties.getUserHome(), product + "-" + version + "-patch." + (SystemInfo.isWindows ? "cmd" : "sh")); try { String cmdLine = String.join(" ", CommandLineUtil.toCommandLine(Arrays.asList(command))); String text = (SystemInfo.isWindows ? "@echo off\n\n" : "#!/bin/sh\n\n") + cmdLine; FileUtil.writeToFile(file, text); FileUtil.setExecutable(file); } catch (Exception e) { Logger.getInstance(UpdateInfoDialog.class).error(e); return; } String title = IdeBundle.message("updates.dialog.title", ApplicationNamesInfo.getInstance().getFullProductName()); String message = IdeBundle.message("update.apply.manually.message", file); IdeUpdateUsageTriggerCollector.MANUAL_PATCH_PREPARED.log(); ApplicationManager.getApplication().invokeLater(() -> Messages.showInfoMessage(message, title)); }