IJPL-218540 platform: preserving 'is-first-session' and 'is-config-imported' properties on app bundle rename

GitOrigin-RevId: 37eff2b9717d274a2e024107e3c4476e756a79ae
This commit is contained in:
Roman Shevchenko
2025-11-14 20:19:20 +00:00
committed by intellij-monorepo-bot
parent de1ceeaf66
commit 25b08b58d3
3 changed files with 20 additions and 14 deletions
@@ -300,7 +300,7 @@ public final class ConfigImportHelper {
if (importSettings == null || importSettings.shouldRestartAfterVmOptionsChange()) {
log.info("The vmoptions file has changed, restarting...");
try {
writeOptionsForRestart(newConfigDir);
InitialConfigImportState.writeOptionsForRestart(newConfigDir);
}
catch (IOException e) {
log.error("cannot write config migration marker file to " + newConfigDir, e);
@@ -371,15 +371,6 @@ public final class ConfigImportHelper {
return Files.isRegularFile(configDir.resolve(VMOptions.getFileName()));
}
private static void writeOptionsForRestart(Path newConfigDir) throws IOException {
var properties = new ArrayList<String>();
properties.add(InitialConfigImportState.FIRST_SESSION_KEY);
if (InitialConfigImportState.isConfigImported()) {
properties.add(InitialConfigImportState.CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY);
}
new CustomConfigMigrationOption.SetProperties(properties).writeConfigMarkerFile(newConfigDir);
}
private static void restart(List<String> args) {
if (Restarter.isSupported()) {
try {
@@ -3,9 +3,11 @@ package com.intellij.openapi.application
import com.intellij.ide.GeneralSettings
import com.intellij.idea.AppMode
import com.intellij.openapi.application.CustomConfigMigrationOption.SetProperties
import com.intellij.openapi.application.ex.ApplicationManagerEx
import com.intellij.openapi.components.StoragePathMacros
import org.jetbrains.annotations.ApiStatus
import java.io.IOException
import java.nio.file.Files
import java.nio.file.Path
@@ -49,4 +51,15 @@ object InitialConfigImportState {
fun isStartupWizardEnabled(): Boolean =
!AppMode.isRemoteDevHost() &&
System.getProperty("intellij.startup.wizard", if (ApplicationManagerEx.isInIntegrationTest()) "false" else "true").toBoolean()
@JvmStatic
@Throws(IOException::class)
fun writeOptionsForRestart(newConfigDir: Path) {
val properties = ArrayList<String>()
properties.add(FIRST_SESSION_KEY)
if (isConfigImported()) {
properties.add(CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY)
}
SetProperties(properties).writeConfigMarkerFile(newConfigDir)
}
}
@@ -11,10 +11,7 @@ import com.intellij.openapi.actionSystem.ActionUiKind
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.impl.SimpleDataContext
import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.PathManager
import com.intellij.openapi.application.writeIntentReadAction
import com.intellij.openapi.application.*
import com.intellij.openapi.components.service
import com.intellij.openapi.fileEditor.FileEditor
import com.intellij.openapi.fileEditor.impl.HTMLEditorProvider
@@ -73,6 +70,11 @@ fun migrateCommunityToSingleProductIfNeeded(args: List<String>) {
val newDir = currentDir.resolveSibling(newDirName)
if (Files.exists(newDir)) return
try {
InitialConfigImportState.writeOptionsForRestart(PathManager.getConfigDir())
}
catch (_: Exception) { }
val commands = buildList {
add(listOf("/bin/mv", "-n", currentDir.toString(), newDir.toString()))
val vmOptionsFile = currentDir.resolveSibling("${currentDirName}.vmoptions")