winst: leere Ordner löschen

Antworten
Martin von Wittich
Beiträge: 16
Registriert: 11 Jun 2010, 15:45

winst: leere Ordner löschen

Beitrag von Martin von Wittich »

Hi,

wir haben bei unseren Paketen häufiger die Situation, dass sich mehrere Pakete einen Ordner in C:\Programme oder im Startmenü teilen. Wenn eines der Pakete deinstalliert wird, soll natürlich nicht der ganze Ordner gelöscht werden, der noch Dateien von den anderen Paketen enthält; wenn aber das letzte der Pakete deinstalliert wird, soll kein leerer Ordner übrig bleiben. Geht das irgendwie mit winst, oder muss ich mir einen Workaround mit DosBatch und rmdir bauen?
Mit freundlichen Grüßen,
Martin v. Wittich

IServ GmbH
Bültenweg 73
38106 Braunschweig

Telefon: 0531-2243666-0
Fax: 0531-2243666-9
E-Mail: info@iserv.eu
Internet: iserv.eu
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: winst: leere Ordner löschen

Beitrag von d.oertel »

Hi,

der opsi-winst hat zur Zeit keinen Befehl mit dem man nur leere Verzeichnisse löscht

Ich nehme es mal als Feature Request auf ....

gruss
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Martin von Wittich
Beiträge: 16
Registriert: 11 Jun 2010, 15:45

Re: winst: leere Ordner löschen

Beitrag von Martin von Wittich »

Hab ein Workaround gefunden:

Code: Alles auswählen

[WinBatch_RemoveEmptyFolder]
cmd /c rmdir "%CommonStartMenuPath%\Programme\Cornelsen"
Delete "%CommonStartMenuPath%\Programme\Cornelsen" in einer Files-Section tut es leider nicht - es bricht zwar ab, wenn es Unterordner in dem zu löschenden Ordner findet, aber wenn der Ordner nur Dateien enthält, würde es die Dateien und den Ordner trotzdem löschen. DosBatch/DosInAnIcon tut es ebenfalls nicht, weil "Startmenü" einen Umlaut enthält, aber opsi die resultierende Batchdatei nicht mit dem CP850-Encoding speichert, das cmd erwartet - mit dem falschen Encoding findet rmdir den Ordner dann nicht. Praktischerweise konvertiert cmd den String, wenn ich ihn per /c übergebe, daher der WinBatch-cmd/c-Hack.
Mit freundlichen Grüßen,
Martin v. Wittich

IServ GmbH
Bültenweg 73
38106 Braunschweig

Telefon: 0531-2243666-0
Fax: 0531-2243666-9
E-Mail: info@iserv.eu
Internet: iserv.eu
Martin von Wittich
Beiträge: 16
Registriert: 11 Jun 2010, 15:45

Re: winst: leere Ordner löschen

Beitrag von Martin von Wittich »

Noch besser - damit sieht man kein cmd-Fenster aufblitzen, und "Programme" ist nicht mehr hardgecodet (da wir leider noch auf opsi 3.4-Stand sind, haben wir die %CommonProgramsDir%-Variable noch nicht, von der ich annehme, das sie den Pfad enthalten würde):

Code: Alles auswählen

ExecWith_RemoveEmptyFolder "cscript" "//E:VBS"

[ExecWith_RemoveEmptyFolder]
Set shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
path = shell.SpecialFolders("AllUsersPrograms") & "\Cornelsen"
If fso.FolderExists(path) Then
  Set d = fso.GetFolder(path)
  If d.Files.Count = 0 And d.SubFolders.Count = 0 Then
    fso.DeleteFolder(path)
  End If
End If
Das //E:VBS ist wichtig, weil cscript sonst versuchen würde, den Scripttyp an der Erweiterung zu erkennen - die ist aber bei ExecWith immer ".bat", was cscript natürlich nicht versteht.
Mit freundlichen Grüßen,
Martin v. Wittich

IServ GmbH
Bültenweg 73
38106 Braunschweig

Telefon: 0531-2243666-0
Fax: 0531-2243666-9
E-Mail: info@iserv.eu
Internet: iserv.eu
bell
Beiträge: 41
Registriert: 22 Dez 2010, 12:46

Re: winst: leere Ordner löschen

Beitrag von bell »

Hallo,

Falls Umlaute stören kann man auch einfach das ganze so machen:

Code: Alles auswählen

[DosInAnIcon_rmdir]
rmdir c:\DOKUME~1\Administrator\STARTM~1\Folder
MfG bell
Martin von Wittich
Beiträge: 16
Registriert: 11 Jun 2010, 15:45

Re: winst: leere Ordner löschen

Beitrag von Martin von Wittich »

Das hardcodet die Pfade aber wieder, sodass es nicht auf einem englischen System funktionieren würde ;)
Mit freundlichen Grüßen,
Martin v. Wittich

IServ GmbH
Bültenweg 73
38106 Braunschweig

Telefon: 0531-2243666-0
Fax: 0531-2243666-9
E-Mail: info@iserv.eu
Internet: iserv.eu
Antworten