Frage

Die Antwort beinhaltet wahrscheinlich eine benutzerdefinierte Deinstallation, aber es scheint wie ein solcher größerer Überstände und etwas, das jeder Antrag wünschen würde, also dachte ich, ich würde sehen, ob ich etwas einfaches fehlt.

Ich habe ein paar Projekte in Visual Studio 2008 mit C #, WinForm-Projekten erstellen. Eine Verwendung Klicken Sie auf einmal installieren, und eine Verwendung eines Setup-Projekts. Beide können Sie dazu ermöglichen, die Anwendung zu verlassen, wenn Sie das Deinstallieren. Bei Windows 7 erhalten Sie eine Warnung, aber haben Sie die Möglichkeit, es trotzdem zu leiten ... auf XP nicht einmal eine Warnung.

Rufen Sie mich verrückt an, aber der Gedanke an alle von meinen Programmdateien wurde entfernt, und meine App ist noch laufend, hört sich überhaupt nicht nach einem guten Design an. Erinnerungen an GPFS kommen in den Sinn, oder der Weg .NET verwendet Verzögerung Laden für DLLs, könnte auch ein Problem sein, wenn die DLL geladen werden muss, und ist weg.

Gibt es also eine einfache Möglichkeit, die Deinstallation nicht zuzulassen, wenn Ihre App noch läuft?

Ich benutze C #, aber ich benutze die vb.net-einzelnen Instanzklasse, um sicherzustellen, dass meine App nur einmal läuft, also vielleicht etwas, das das damals nutzt, um ein Mutex zu erstellen, um ein Mutex zu erstellen? .

auch meine App lässt nur "pro Benutzer" installiert, nicht "Alle Benutzer", sodass ich mir keine Sorgen machen muss, dass meine App in einer anderen Sitzung ausgeführt wird (wenn dies der Fall ist, ist es in Ordnung, wenn er laufen soll 100% seine eigene Kopie).

edit: Da ich nichts anderes finde, habe ich die Mutex-Idee ausprobiert und es funktioniert nicht. Hier ist mein Code:

In der App habe ich diese, um den benannten Mutex zu erstellen und während der App läuft: generasacodicetagpre.

In der Deinstallation Aktion habe ich diese Option, bis sie beendet werden (da es nicht einfach ist, eine Abbruchoption bereitzustellen): generasacodicetagpre.

erstelltNEw wird in der Deinstallation niemals in der Deinstallation eingestellt, fast wie unter einer anderen Sitzung oder etwas läuft. Ich habe nicht versucht, Global \ zum Mutex-Namen hinzuzufügen, aber das funktioniert sowieso nicht gut für meine App, da ich per-Benutzer installiert, sodass eine Installation installiert werden soll, sodass eine Installation installiert werden kann, um weiterhin auf einer anderen Sitzung zu laufen, selbst wenn man deinstalliert wird. < / p>

War es hilfreich?

Lösung

Kurze Antwort ist, dass es keine einfache Möglichkeit gibt, dies zu tun, da Microsoft Sie nicht möchten.

Meine Antwort hat mit einem Mutex endet, als ich den Code korrigiert habe, scheint es gut zu funktionieren.

in der App, die ich tue: generasacodicetagpre.

Die SingleStanceApplication.Run-Zeile ist, was Ihre App ausführt, ich benutze den VB.NET-Framework.

In der benutzerdefinierten Deinstallation Aktion I mache ich: generasacodicetagpre.

Zunächst verwendete ich M.ReleAsemutex () anstelle von M.Close (), die ich herausfand, dass es eine Ausnahme wirft, weil ich den Mutex nicht besitze.In der Nähe hätte ich verwendet haben sollen, nur um sicherzustellen, dass meine Kopie geschlossen wurde, bevor ich erneut geprüft habe (sonst erstellt wurde nie wahr, wenn es das erste Mal nicht wahr war).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top