Windows hängt das
Handle der offenen Datei einfach beim Umbennen um
ist auf jedefall, cool , denn es erlaubt Software Updates mit super wenig downtime.
Das funktioniert aber immer nur Semi-Stabil.
Den Trick versuchte ich immer wieder in den letzten "Jahrzehnten" zu nutzen, um Updates am Server trotz offener Anwendung auszutauschen.
Im einem Jahr ging es, im nächsten nicht mehr.
Ok. An einem Netzwerkshare ist es komplizierter da noch weitere Faktoren rein spielen könnten
Naja Updates sind bei mir immer lokal und das Update wird von einem Dienst durchgeführt. Der Dienst ist immer aus. Wird nur für das Update gestartet und existiert wirklich nur um die Elevevated Rights aus der installation zu konservieren, so dass Updates immer mit Elevated Right durchegführt werden können.
Zudem setzte ich den SecurityDiscriptor(
ACL) des Dienstes , bei der installation(ServiceAfterInstall) herunter, damit er von Anwendungen mit Userrechten gestartet werden kann.
Ich weiß nicht viel darüber, aber ich habe es mir (ein bisschen) von Chrome und (sehr viel)von Firefox abgeschaut.
Nutze im Moment diese ACLs für den Update Service...oder Elevation Service...
Delphi-Quellcode:
{//Alte ACL (SDDL )
Permission := 'D:' +
'(A;;CCLCSWRPWPDTLOCRRC;;;SY)' + // default permissions for local system
'(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)' + // default permissions for administrators
'(A;;CCLCSWLOCRRC;;;AU)' + // default permissions for authenticated users
'(A;;CCLCSWRPWPDTLOCRRC;;;PU)' + // default permissions for power users
'(A;;CCDCLCSWRPWPDTLOCRSDRC;;;BU)'+ // Built IN Users
'(A;;RP;;;IU)'; // added permission: start service for interactive users
}
Permission := '
D:' +
'
(A;;CCLCSWRPWPDTLOCRRC;;;SY)' +
// default permissions for local system
'
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)' +
// default permissions for built-in administrators
'
(A;;CCLCSWRPLOCRRC;;;IU)'+
// permissions for interactively logged-on user von MozillaMaintainance und ChromeElevation
'
(A;;CCLCSWRPLOCRRC;;;SU)'+
// permissions for service logon user von MozillaMaintainance und ChromeElevation
'
(A;;CCDCLCSWRPWPDTLOCRSDRC;;;BU)'+
// permissions for built-in users
'
(A;;CCLCSWRPLOCRRC;;;AU)' +
// default permissions for authenticated users
'
(A;;CCLCSWRPWPDTLOCRRCRP;;;PU)';
// default permissions for power users
Wenn die mal nicht mehr ausreichen passe ich die halt an.