Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
425b94fd93 | ||
|
|
e0bdcb01fb | ||
|
|
c840a49f75 | ||
|
|
c535d8b830 | ||
|
|
248a387f01 |
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Ein Minecraft-Launcher für Windows mit getrennten Instanzen, Mod-Unterstützung und Microsoft-Anmeldung.
|
Ein Minecraft-Launcher für Windows mit getrennten Instanzen, Mod-Unterstützung und Microsoft-Anmeldung.
|
||||||
|
|
||||||
Aktueller Stand: Version 1.0.8
|
Aktueller Stand: Version 1.0.9
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Generated
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "aeromc",
|
"name": "aeromc",
|
||||||
"version": "1.0.7",
|
"version": "1.0.9",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "aeromc",
|
"name": "aeromc",
|
||||||
"version": "1.0.7",
|
"version": "1.0.9",
|
||||||
"license": "MIT",
|
"license": "SEE LICENSE IN LICENSE",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"archiver": "^7.0.1",
|
"archiver": "^7.0.1",
|
||||||
"skinview3d": "^3.4.2",
|
"skinview3d": "^3.4.2",
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "aeromc",
|
"name": "aeromc",
|
||||||
"productName": "AeroMC",
|
"productName": "AeroMC",
|
||||||
"version": "1.0.8",
|
"version": "1.0.9",
|
||||||
"description": "AeroMC – Instanz-basierter Minecraft-Launcher (à la MultiMC/Prism)",
|
"description": "AeroMC – Instanz-basierter Minecraft-Launcher (à la MultiMC/Prism)",
|
||||||
"homepage": "https://m-viper.de",
|
"homepage": "https://m-viper.de",
|
||||||
"launcherWebsite": "https://aeromc.viper.ipv64.net",
|
"launcherWebsite": "https://aeromc.viper.ipv64.net",
|
||||||
|
|||||||
@@ -354,6 +354,10 @@ async function restoreGlobalBackup(options) {
|
|||||||
const settingsFile = path.join(userDataDir, 'settings.json');
|
const settingsFile = path.join(userDataDir, 'settings.json');
|
||||||
const rollbackSettings = path.join(rollbackDir, 'settings.json');
|
const rollbackSettings = path.join(rollbackDir, 'settings.json');
|
||||||
let settingsPreviouslyExisted = false;
|
let settingsPreviouslyExisted = false;
|
||||||
|
// wird erst true, sobald der aktuelle Stand tatsächlich weggesichert wurde -
|
||||||
|
// vorher darf der Rollback nichts anfassen, sonst löscht ein früher Fehler
|
||||||
|
// (z. B. ungültiges Archiv) den unveränderten, intakten Originalbestand
|
||||||
|
let originalMovedAway = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ensureDir(extractDir);
|
ensureDir(extractDir);
|
||||||
@@ -382,6 +386,7 @@ async function restoreGlobalBackup(options) {
|
|||||||
endPercent: 40,
|
endPercent: 40,
|
||||||
detailPrefix: 'Sichere aktuelle Instanzen',
|
detailPrefix: 'Sichere aktuelle Instanzen',
|
||||||
});
|
});
|
||||||
|
originalMovedAway = true;
|
||||||
settingsPreviouslyExisted = fs.existsSync(settingsFile);
|
settingsPreviouslyExisted = fs.existsSync(settingsFile);
|
||||||
if (settingsPreviouslyExisted) fs.copyFileSync(settingsFile, rollbackSettings);
|
if (settingsPreviouslyExisted) fs.copyFileSync(settingsFile, rollbackSettings);
|
||||||
|
|
||||||
@@ -414,6 +419,12 @@ async function restoreGlobalBackup(options) {
|
|||||||
restoredSettings,
|
restoredSettings,
|
||||||
};
|
};
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
// Nur zurückrollen, wenn wir den ursprünglichen Bestand überhaupt schon
|
||||||
|
// angefasst haben (siehe originalMovedAway oben). Schlägt die
|
||||||
|
// Wiederherstellung vorher fehl (ungültiges/beschädigtes Archiv o. Ä.),
|
||||||
|
// ist instancesDir noch der unveränderte Originalbestand - den lassen wir
|
||||||
|
// dann bewusst in Ruhe, statt ihn zu löschen.
|
||||||
|
if (originalMovedAway) {
|
||||||
try {
|
try {
|
||||||
if (fs.existsSync(instancesDir)) fs.rmSync(instancesDir, { recursive: true, force: true });
|
if (fs.existsSync(instancesDir)) fs.rmSync(instancesDir, { recursive: true, force: true });
|
||||||
if (fs.existsSync(rollbackInstances)) fs.cpSync(rollbackInstances, instancesDir, { recursive: true });
|
if (fs.existsSync(rollbackInstances)) fs.cpSync(rollbackInstances, instancesDir, { recursive: true });
|
||||||
@@ -424,6 +435,7 @@ async function restoreGlobalBackup(options) {
|
|||||||
else if (!settingsPreviouslyExisted && fs.existsSync(settingsFile)) fs.rmSync(settingsFile, { force: true });
|
else if (!settingsPreviouslyExisted && fs.existsSync(settingsFile)) fs.rmSync(settingsFile, { force: true });
|
||||||
}
|
}
|
||||||
} catch { /* ignore rollback errors */ }
|
} catch { /* ignore rollback errors */ }
|
||||||
|
}
|
||||||
throw err;
|
throw err;
|
||||||
} finally {
|
} finally {
|
||||||
try { fs.rmSync(tmp, { recursive: true, force: true }); } catch { /* ignore */ }
|
try { fs.rmSync(tmp, { recursive: true, force: true }); } catch { /* ignore */ }
|
||||||
|
|||||||
+10
-1
@@ -269,7 +269,16 @@ function destroyTray() {
|
|||||||
// Windows-Autostart-Eintrag setzen/entfernen + Tray-Symbol passend ein-/ausblenden
|
// Windows-Autostart-Eintrag setzen/entfernen + Tray-Symbol passend ein-/ausblenden
|
||||||
function applyAutostart(enabled) {
|
function applyAutostart(enabled) {
|
||||||
try {
|
try {
|
||||||
app.setLoginItemSettings({ openAtLogin: !!enabled, args: enabled ? ['--hidden'] : [] });
|
// Gleiches Problem wie bei den Desktop-Verknüpfungen (siehe verknuepfungsArgs
|
||||||
|
// weiter oben): im Entwicklungsmodus zeigt process.execPath nur auf die nackte
|
||||||
|
// electron.exe, die ohne Pfadangabe ihren eigenen leeren Startbildschirm zeigt
|
||||||
|
// statt AeroMC zu laden. Zusätzlich: bei der Portable-Fassung zeigt
|
||||||
|
// process.execPath auf den entpackten Temp-Ordner – der wäre morgen tot,
|
||||||
|
// deshalb wie bei den Verknüpfungen über verknuepfungsZiel() auflösen.
|
||||||
|
const args = enabled
|
||||||
|
? (app.isPackaged ? ['--hidden'] : [path.join(__dirname, '..'), '--hidden'])
|
||||||
|
: [];
|
||||||
|
app.setLoginItemSettings({ openAtLogin: !!enabled, path: verknuepfungsZiel(), args });
|
||||||
} catch { /* z. B. in portabler Umgebung ohne Schreibrechte auf die Registry */ }
|
} catch { /* z. B. in portabler Umgebung ohne Schreibrechte auf die Registry */ }
|
||||||
if (enabled) createTray();
|
if (enabled) createTray();
|
||||||
else destroyTray();
|
else destroyTray();
|
||||||
|
|||||||
Reference in New Issue
Block a user