Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB.NET Programm soll sich selbst löschen

Empfohlene Antworten

Veröffentlicht

Hallöchen.

Wie kann ich ein Programm dazu veranlassen, sich selbst zu löschen?

So lange es ausgeführt wird, gibt es keinen Lösch-Zugriff auf sich selbst.

Wie kann ich ein Programm dazu veranlassen, sich selbst zu löschen?

Gar nichr. Das kann nur ein anderes Programm tun, und auch nur, wenn die Dateien nicht mehr im Gebrauch sind.

Vielleicht hat einer von euch ne Idee:

Ich schreibe nen Deinstallations-Tool. Die von .NET angebotenen Setup-Projekte kann ich nicht gebrauchen bzw weiß nicht wie ich die so konfiguriere, wie ichs brauche. (andere Oberfläche, verschiedene weitere Einstellungen)

Vielleicht gibt es eine Möglichkeit ein Programm komplett aus dem RAM ausführen zu lassen, dass dann keinen Zugriff mehr auf die Datei auf der Festplatte benötigt???

Vielleicht hat auch einer von euch eine gute Idee, wie ich nach der Deinstallation das Deinstall-Tool wegbekomme.

Ich schreibe nen Deinstallations-Tool.

Nimm lieber eine fertige und sicher funktionierende Lösung.

Vielleicht hat auch einer von euch eine gute Idee, wie ich nach der Deinstallation das Deinstall-Tool wegbekomme.

Beim nächsten Windows-Start löschen lassen.

Wenn ich eine fertige Lösung nehme, bin ich im Funktionsumfang eingeschränkt.

Wie soll das Programm beim Windowsstart gelöscht werden?

Wenn ich eine fertige Lösung nehme, bin ich im Funktionsumfang eingeschränkt.

Du wirst den Funktionsumfang vom Windows-Installer IMO nie selbst erreichen, es sei denn, Du willst Dich noch sehr sehr lange mit einem eigenen Installer beschäftigen.

Wie soll das Programm beim Windowsstart gelöscht werden?

In der Registry zum Löschen eintragen. Den Registry-Key musst Du selbst raussuchen, hab' ich nicht im Kopf (könnte auch sein, dass es kein eigener Key war, sondern RunOnce verwendet werden muss).

Oder nimm MoveFileEx mit dem Flag MOVEFILE_DELAY_UNTIL_REBOOT.

Das mit der Registry werd ich nachforschen, vielen DANK.

Nochmal zu dem Installer. Er besitzt verschiedene Sachen nicht, die ich beim installieren brauche, bzw ich weiß nicht wie ich eigenen Code rein bringe. Des weiteren ist der eigene Installer schon komplett funktionstüchtig.

ich hab meine vorige Anwort noch ergänzt, vielleicht hilft es Dir weiter.

Er besitzt verschiedene Sachen nicht, die ich beim installieren brauche, bzw ich weiß nicht wie ich eigenen Code rein bringe.

Du kannst eigene Aktionen (Custom Actions) ausführen lassen.

Kannst du mir das mit den Custom Actions kurz erläutern? (Visual Studios 2005 VB.NET)

Kann man in den Installer auch eigene Formulare einfügen? Ich hab nämlich 2 Checkboxen zusätzlich im Gebrauch.

Da Du .NET verwendest, schau Dir die Installer Class an.

Man kann auch zusätzliche Dialoge einfügen. Wenn Du mehr Komfort beim Erstellen brauchst, dann gibt es zusätzliche Programme, mit denen man Setups bauen kann.

Wenn Du bestimmte Fragen hast, dann stell sie ruhig. Vielleicht könnte man darüber auch ein Tutorial schreiben, obwohl es bestimmt schon dutzende Tutorials zu dem Thema gibt.

Das mit dem MoveFileEx hab ich ausprobiert noch und nöcher. Es kommt immer wieder eine Fehlermeldung.

Ein Aufruf an die PInvoke-Funktion "Deinstall!Deinstall.F_OptiDeSetup::MoveFileEx" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.


Public Declare Function MoveFileEx Lib "kernel32" _

Alias "MoveFileExA" (ByVal lpExistingFileName As String, _

ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long


'---------------------------

Public Const MOVEFILE_DELAY_UNTIL_REBOOT As Long = &H4

Die MoveFileEx gibt es auch mit boolean als Rückgabe. Diese hat allerding genau die gleiche Fehlermeldung geworfen.

schau mal nach inno setup

Das mit dem MoveFileEx hab ich ausprobiert noch und nöcher. Es kommt immer wieder eine Fehlermeldung.

Probiere mal (C#):


[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]

static extern bool MoveFileEx(string sourceFileName, string destFileName, UInt32 Flags);


private bool Delete_DelayUntilReboot(string path)

{

	return MoveFileEx(path, null, 4);

}

Ich hab festgestellt, dass das MoveFileEx nicht immer geht, vor allem nie bei meinen EXE-Dateien.

Ich hab mir mal was anderes einfallen lassen: Folgendes:

Ich lege vor Programmende (ggf. bei FormClosing) eine BATCH-Datei an, die ich aufrufe ...

dim pfad as string

dim stream as io.streamwriter


pfad = "c:\test.bat"

stream = New IO.StreamWriter(pfad, False)


stream.WriteLine("@echo off")

stream.WriteLine(":L1")

stream.WriteLine("sleep 1")

stream.WriteLine("del """ & Application.ExecutablePath & """ 2>nul")

stream.WriteLine("if exist """ & Application.ExecutablePath & """ goto L1")

stream.WriteLine("del ""test.bat"" 2>nul")

stream.Close()


Shell(pfad, AppWinStyle.MinimizedFocus)

Die Batch-Datei versucht so lange das Programm zu schließen, bis der Zugriff darauf da ist. Dann löscht sich die Datei selbst.

Danke nochmal für die Hilfe

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.