Seite 1 von 1

identische Dateien in zwei unterschiedlichen Paketen

Verfasst: 04. Sep 2007, 11:03
von killerkiwi
Hallo Leute!
ich hab gerade das doofe Problem dass ich zwei Pakete habe die jeweils eine identische Datei kopieren. Deinstallier ich jetzt eines der beiden Pakete sollte die Datei eigentlich nicht gelöscht werden (da sie vom anderen, installierten Paket ja noch benötigt wird!)
Mir war vom Kurs eigentlich in Erinnerung dass das dann auch nicht passieren sollte, aber bei Tests auf zwei Rechnern hat es jeweils nicht funktioniert. Auch wäre ich dann davon ausgegangen dass die Datei automatsich nochmal neu kopiert werden sollte, da ja die Datei ja dem anderen Programm fehlt...
Wenn mir jemand nen Tipp geben könnte (wo wahrscheinlich mein Denkfehler liegt) wäre ich dankbar!
Grüß killerkiwi

Verfasst: 04. Sep 2007, 11:34
von MSC
Hallo,

Wenn die Datei im EmpirumSkript über einen Befehel wie:

1:%SRC%Manager.exe, %APP%Manager.exe, NORMAL, 574784

kopiert wird, kann man entweder den FLAG "SHAREDDLL" anhängen, also:

1:%SRC%Manager.exe, %APP%Manager.exe, NORMAL SHAREDDLL, 574784

(Erklärung siehe unten.)

Oder einfacher den Flag "DONTDELETE" anhängen, damit wird bei der Deinstallation diese Datei ausgelassen, also:

1:%SRC%Manager.exe, %APP%Manager.exe, NORMAL DONTDELETE, 574784

Code: Alles auswählen

Hier die Info aus dem Handbuch:

SHAREDDLL
 Die Zieldatei wird in der Registrierungsdatenbank als gemeinsam benutzte Datei eingetragen. Dabei wird ein Zähler erhöht. Beim Deinstallieren wird der Zähler heruntergezählt und das Löschen der Datei angeboten, wenn der Zähler auf 0 fällt.

DONTDELETE
 Die Zieldatei wird beim Deinstallieren nicht gelöscht bzw. der Unterabschnitt nicht verarbeitet. Dieses Flag wird z. B. für den "Uninstaller "_UnInst.exe" benötigt, da eine Anwendung (und damit auch Setup.exe) sich nicht selbst zusammen mit den übergeordneten Verzeichnissen löschen kann.

  

Sollte allerdings die Datei über ein externes Installationsprogramm installiert/deinstalliert werden, müsste man evtl. bei der Deinstallation die betroffene Datei von einer zuvor ertstellten Kopie der Datei aus dem %SRC% kopieren.

MFG Mario
.

prima, vielen Dank!

Verfasst: 04. Sep 2007, 16:24
von killerkiwi
ja, da hätte man mit bischen Hirn auch selbst draufkommen können;) Vielen Dank für die Infos!!!

Verfasst: 05. Sep 2007, 10:44
von killerkiwi
SHAREDDLL
Die Zieldatei wird in der Registrierungsdatenbank als gemeinsam benutzte Datei eingetragen. Dabei wird ein Zähler erhöht. Beim Deinstallieren wird der Zähler heruntergezählt und das Löschen der Datei angeboten, wenn der Zähler auf 0 fällt.

hier hätte ich noch eine Frage:
wenn ich die Deinstallation ohne Benutzerinteraktion durchführe sind die Dateien auch nach löschen beider Programme noch da. Könnte das daran liegen dass mir das "Löschen der Datei angeboten" wird und wenn keine Antwort kommt dann die Datei bestehen bleibt??? Wenn ja, wie kann ich das umgehen?

Verfasst: 06. Sep 2007, 08:43
von MSC
Mit welchem Silent-Parameter wird das Paket denn ausgeführt?
Vielleicht mal prüfen ob ein zusätzlicher Parameter wie ALWAYS hilft.

Odre nochmal was abgefahrenes, aber bitte erst prüfen ob das funktioniert ;-)

Den Regsitry Wert für den SHAREDDLL-Status abfragen und bei einem Stand von "1" eine weitere Sektion zur Deinstallation der gewünschten Datei aufrufen.

Müsste in etwa so funktionieren:

Code: Alles auswählen


...
[Commands]
1:%System%\calc.exe,   C:\Temp\calc.exe, SHAREDDLL,        0
;DummyWert angeben
Set V_SharedDllCounter = 2
Set V_SharedDllCounter = %HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls","C:\Temp\calc.exe"%
ReplaceEnv V_SharedDllCounter
;Echo zur berprüfung
Echo %V_SharedDllCounter%
If "V_SharedDllCounter" == "1" Then "Set:DeleteFile" EndIf

[Set:DeleteFile]
1:%System%\calc.exe,   %temp%\calc.exe, DELETE,        0
...


MFG Mario
.