Ich habe das Problem mit einem benutzerdefinierten Post-Update-Skript gelöst, das Registrierungseinträge und Startmenü-Verknüpfungen korrigiert, um das --disable-direct-write
Argument hinzuzufügen .
Tastenkombinationen
Wie ich bei @ codeSwift4Life's Antwort angegeben habe, funktioniert das Anhängen --disable-direct-write
nicht mit Verknüpfungen zu dem Update.exe
Prozess (was eigentlich ein Eichhörnchenprogramm ist ). Ich habe jedoch herausgefunden, wie man dem --processStart atom.exe
Befehl Argumente anhängt . Siehe dieses Problem.
Wenn Sie die Atom-Verknüpfung zum Anhängen ändern möchten --disable-direct-write
, müssen Sie sie wie folgt ändern:
C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe
zu einer der folgenden Zeilen:
C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe -a "--disable-direct-write" C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe --process-start-args "--disable-direct-write"
Kontextmenü
Um das Kontextmenü "Öffnen mit Atom" zu ändern, müssen Sie einige Registrierungseinträge aktualisieren. Ändern Sie sie aus:
X:\Path\to\atom\app-1.0.xx\atom.exe "%V"
zu:
X:\Path\to\atom\app-1.0.xx\atom.exe "%V" --disable-direct-write
Automatisiertes Skript nach dem Update
Da es jedoch viele Registrierungseinträge gibt und Sie nach jedem Update alles wiederholen müssen (und Updates sehr häufig sind), sind manuelle Änderungen nicht möglich.
Deshalb habe ich ein automatisiertes Post-Update-Skript erstellt, das alles automatisch aktualisiert. Sie müssen es nur nach jedem Atom-Update ausführen.
Die Basis meines Post-Update-Skripts war dieses Kaffeeskript, bei dem es sich tatsächlich um das Standard-Skript handelt, das alle unsere manuellen Änderungen überschreibt.
Sie müssen das vorgenannte Skript auf folgende Weise ändern:
Veränderung:
createShortcuts = (callback) -> spawnUpdate(['--createShortcut', exeName], callback)
zu:
createShortcuts = (callback) -> spawnUpdate(['--createShortcut', exeName, '--process-start-args', '--disable-direct-write'], callback)
Veränderung:
installMenu = (keyPath, arg, callback) -> args = [keyPath, '/ve', '/d', 'Open with Atom'] addToRegistry args, -> args = [keyPath, '/v', 'Icon', '/d', process.execPath] addToRegistry args, -> args = ["#\\command", '/ve', '/d', "# \"#\""] addToRegistry(args, callback)
zu:
installMenu = (keyPath, arg, callback) -> args = [keyPath, '/ve', '/d', 'Open with Atom'] addToRegistry args, -> args = [keyPath, '/v', 'Icon', '/d', atomExe] addToRegistry args, -> args = ["#\\command", '/ve', '/d', "# \"#\" --disable-direct-write"] addToRegistry(args, callback)
Die atomExe
Variable ist wie folgt definiert (oben, aber hinter den require
Zeilen):
# Get the latest version of atom.exe parentDir = fs.listSync('..').filter (x) -> x.indexOf('app-') > -1; [..., atomDir] = parentDir atomExe = path.join(path.resolve(atomDir), 'atom.exe')
Außerdem müssen Sie Suchen / Ersetzen process.execPath
mit atomExe
. Dies ist erforderlich, da das Skript direkt über Node ausgeführt wird und die process
Variable auf Node statt auf Atom verweist.
Fügen Sie schließlich die folgenden Zeilen am Ende des Skripts hinzu, um Verknüpfungen und Registrierungsaktualisierungen auszuführen:
# Update shortcuts, install context menu updateShortcuts -> installContextMenu ->
Das Skript wird mit ausgeführt coffee squirrel-update.coffee
. Sie sollten es in einem neuen Unterordner im AppData\Local\atom
Ordner ablegen. Sie müssen auch fs-plus
und coffee-script
Knoten Pakete, um das Skript erfolgreich auszuführen.