Benutzer-Werkzeuge

Webseiten-Werkzeuge


loeschroutine

Dies ist eine alte Version des Dokuments!


Löschroutine


Ist ein Skript in FixFoto aktiviert, will man dieses möglicherweise wieder entfernen, z.B. wenn man ein Skript nur mal testen will.
Skriptarchive können sehr unterschiedlich benannt werden und beim Entpacken des Archivs oder bei Anwendung des Skripts werden möglicherweise zusätzliche Dateien und Ordner im FF-Skriptverzeichnis abgelegt. Außerdem legt ein Skript eventuell Daten in der Registry des Betriebssystems ab. Was genau geschieht, weiß nur der Skriptautor und der sollte daher in seinem Skript eine Löschroutine einbauen, mit der auf Wunsch alle Komponenten des Skripts restlos entfernt werden können.

VBS-Beispiel für eine Löschroutine (grün > individuelle Anpassung erforderlich)


Definitionen (jeweils prüfen ob evtl. schon vorhanden)

Der Skriptname muss abgelegt werden,
const SkriptName = "Beispiel.vbs"
die folgenden Objekte sind anzulegen,
Dim objFS
Set objFS = CreateObject("Scripting.FileSystemObject")
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
die Lese-Konstante ist erforderlich,
const ForReading = 1
drei Variable sind notwendig
Dim Antwort, Abbruch, TempFile
Abbruch = false
und eine Konstante wird definiert, die beim Aufruf der Löschroutine auf true gesetzt wird
Dim SkriptKill
SkriptKill = false

Aufruf und Durchführung

Als erstes muss festgelegt werden, wie die Löschroutine vom Anwender aufgerufen werden soll. Da der Aufruf möglichst versteckt und nicht unbeabsichtigt erfolgen soll, wurde hier die Tastenkombination Alt + d festgelegt. Realisierbar ist dieser Aufruf aber nur, wenn das Skript bei Aufruf einen Dialog anzeigt. In diesem Dialog wird ein BUTTON-Steuerfeld integriert mit der Benennung &d. Das vorgestellte & bewirkt, dass der Button mit der genannten Tastenkombination aktiviert werden kann. Damit das Steuerfeld unsichtbar ist, wird ihm die Größe 1 x 1 zugewiesen.
FF_AddControl Dialog,"&d","BUTTON",40,170,1,1
Um sicher zu stellen, dass der Aufruf direkt erfolgen kann, wird außerdem der Fokus auf den Button gesetzt mit dem Befehl
FF_ActivateControl Dialog,"&d"
In der Abrufschleife erfolgt bei Erkennung von &d eine Sicherheitsabfrage. Wird diese bejaht, wird die Löschroutine aufgerufen.

'### Definitionen ( siehe oben)

'### Dialog mit &d-Schaltfläche

call main '————————————————————— Sub main

do

  Select Case FF_ShowDialog (Dialog)
  Case "&d"
      Antwort = msgbox("Soll das Skript " & SkriptName & vbNewline & _
          " mit allen dazugehörigen Komponenten wirklich gelöscht werden?", _
          vbYesNo + vbQuestion,"Sicherheitsabfrage")
      if Antwort = vbYes then
          SkriptKill = true
          exit do
      end if
  Case "CANCEL"
      exit do
  Case Else
  End Select

loop

FF_CloseDialog (Dialog) if SkriptKill then call KillSkript 'ggf. Skript komplett entfernen

End Sub '————————————————————— Sub KillSkript 'Skript mit allen Komponenten entfernen Dim Spfad const RegSchluessel = "\FF_Beispiel"

'### FixFotoScript.ini bereinigen TempFile = FF_GetFFPathEx(1) & "\FixFotoScript.ini" if objFS.FileExists(TempFile) then

  call IniBereinigung
  if Abbruch then exit sub

else

  msgbox "Die Datei FixFotoScript.ini konnte nicht gefunden werden." & vbNewLine & _
  "Der Löschvorgang wird abgebrochen!",vbExclamation,"Hinweis"
  exit sub

end if

'### zip-Archiv auf Wunsch sichern, dann löschen TempFile = FF_GetScriptPath & "" & objFS.GetBaseName(Skriptname) & ".zip" 'wenn das Archiv einen anderen Namen als das Skript hat, muss das hier berücksichtigt werden!!! if objFS.FileExists(TempFile) then

Antwort = msgbox("Soll das Archiv " & objFS.GetBaseName(Skriptname) & ".zip" & _

  " gesichert werden?",vbYesNo + vbQuestion,"Sicherheitskopie")

if Antwort = vbYes then

  SPfad = FF_EnterPath(true,"Wo soll die Sicherheitskopie angelegt werden?")
  if SPfad = "" then
      msgbox "Das Löschen des Skripts wird abgebrochen!",vbExclamation,"Hinweis"
      exit sub
  end if
  SPfad = SPfad & "\" & objFS.GetBaseName(Skriptname) & ".zip"
  objFS.CopyFile Tempfile, SPfad, true

end if objFS.DeleteFile TempFile,true end if

'### Skriptdatei löschen TempFile = FF_GetScriptPath & "" & Skriptname objFS.DeleteFile TempFile,true

'### evtl. beigepackte bzw. erzeugte Dateien und Ordner löschen TempFile = FF_GetScriptPath & "\Beipack.txt" 'Dateibeispiel if objFS.FileExists(TempFile) then objFS.DeleteFile TempFile,true

TempFile = FF_GetScriptPath & "\BeipackSammlung" 'Ordnerbeispiel if objFS. FolderExists (TempFile) then objFS. DeleteFolder TempFile,true

'### Registry-Daten löschen TempFile = "HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Script" & RegSchluessel WshShell.RegDelete(TempFile)

'### Fertigmeldung msgbox "Nach Durchführung der 'Automatischen Skriptkonfiguration' ist das Skript" & vbNewLine & _ Skriptname & " mit allen Komponenten gelöscht!",vbExclamation,"Hinweis"

End Sub '————————————————————— Sub IniBereinigung 'FixFotoScript.ini - Bereinigung Dim Zeile, zNr,Anfang, Ende, DateiTmp, ZielZeile, tmpString

DateiTmp = FF_GetFFPathEx(1) & "\FixFotoScript.tmp"

'### Wo befindet sich der Eintrag zum Skript? Set Zeile = objFS.OpenTextFile(TempFile, ForReading) zNr = 0 do Until Zeile.AtEndOfStream

  tmpString = Zeile.ReadLine
  zNr = zNr + 1
  if tmpString = "[Script]" then Anfang = zNr
  if tmpString = "File=.\" & Skriptname then
      Ende = zNr
      exit do
  end if

loop Zeile.Close

if Ende ⇐ Anfang then

  msgbox "Die Datei FixFotoScript.ini konnte nicht bereinigt werden." & vbNewLine & _
      "Der Löschvorgang wird abgebrochen!",vbExclamation,"Hinweis"
  Abbruch = true
  exit sub

end if

'### Zeilen ohne skriptbezogene Zeilen in DateiTmp übertragen Set Zeile = objFS.OpenTextFile(TempFile, ForReading) Set ZielZeile = objFS.CreateTextFile(DateiTmp, True) zNr = 0 do Until Zeile.AtEndOfStream

  tmpString = Zeile.ReadLine
  zNr = zNr + 1
  if zNr < Anfang or zNr > Ende then
      ZielZeile.WriteLine tmpString
  end if

loop Zeile.Close ZielZeile.Close

'### Umkopieren von DateiTmp nach FixFotoScript.ini (TempFile) objFS.CopyFile DateiTmp, TempFile, True objFS.DeleteFile (DateiTmp)

End Sub '—————————————————————
Bevor man diese Routine testet muss natürlich das Skript gesichert werden um es nachher wieder importieren zu können.

loeschroutine.1307000006.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki