2008-09-09 8 views

Antwort

6

Persönlich erstelle ich meinen eigenen Mechanismus, um den Selbstaktualisierungsprozess zu starten, wenn der Zeitstempel meiner Anwendung nicht mit dem Server synchronisiert ist. Nicht zu schwierig, aber es ist keine einfache Aufgabe.

By the way, für Delphi Sie einige Dritte Hilfe verwenden können:

http://www.tmssoftware.com/site/wupdate.asp

AKTUALISIERT:

Für meine Implementierung:

MyApp.exe in 3 verschiedenen Modi betrieben wird

  1. MyApp.EXE ohne irgendein Argument. Dies startet die Anwendung in der Regel.

    1.1 Die allererste Sache ist es, seine eigene Datei-Zeit mit dem Server zu validieren.

    1.2 Wenn Update erforderlich ist, dann wird es die aktualisierte Datei auf die "MyApp-YYYY-MM-DD-HH-MM-SS.exe"

    1.3 Dann rufen Sie es „MyApp-YYYY- benannte Datei herunterladen MM-DD-HH-MM-SS.exe "mit Befehlsargument

    MyApp-YYYY-MM-DD-HH-MM-SS.exe --update MyApp.EXE 
    

    1.4 Beenden Sie diese Anwendung.

    1.5 Wenn kein Update erforderlich, dann wird die Anwendung starten normalerweise von 1,1

  2. MyApp.exe --update „Dateiname“.

    2.1 Versuchen Sie, sich alle 100ms auf "FILENAME" zu kopieren, bis Sie erfolgreich sind.

    2.2 Rufen Sie "FILENAME" bei Erfolg auf

    2.3 Rufen Sie "FILNAME - MyApp-YYYY-MM-DD-HH-MM-SS.exe löschen" auf, um sich selbst zu löschen.

    2.4 Terminate

  3. MyApp.exe --delete "Dateiname"

    3.1 Versuchen Sie die Datei "Dateiname" alle 500ms bis Erfolg zu löschen. Terminate

    3,2

Ich habe schon seit 7 Jahren dieses Schema für meine Anwendung benutzen und es funktioniert gut. Es kann ziemlich schmerzhaft sein, zu debuggen, wenn etwas schief geht, da die Schritte viele Prozesse beinhalten. Ich schlage vor, dass Sie eine Menge Protokollierung durchführen, um einfachere Fehlersuche zu ermöglichen.

Viel Glück

+0

Genau das habe ich getan. – Branko

+0

Ich habe nichts dagegen, upvote dann;) – Sake

1

Ich bin nicht 100% sicher, ob dies ohne den Stummel erreicht werden kann, aber dieser Artikel liefern kann einen kleinen Einblick:

How To: ClickOnce deployment for unmanaged app with COM component in managed assembly

+0

Es scheint spezifisch für eine Umgebung, in der Sie Ihr Manifest auf eine COM-Komponente verweisen können, die eine verwaltete Assembly ist. Eine 100% nicht verwaltete Lösung würde diesem kleinen Hack keinen Platz zum Arbeiten bieten. –

3

Nein, der Einstiegspunkt für Ihre App muss Code verwaltet werden .

Dies ist von einem blog post von Brian Noyes, einer der wichtigsten Autoritäten auf ClickOnce und Autor von Smart Client Deployment with ClickOnce.

Wenn Ihre App WIRKLICH veraltet ist (z. B. VB6, MFC, ATL usw.), wie in einer ausführbaren Datei mit nicht verwaltetem Code, dann können Sie sie nicht als ausführbare Datei über ClickOnce bereitstellen.

Die akzeptierte Problemumgehung scheint eine Stub-Exe mit verwaltetem Code zu sein, die die Haupt-Exe startet.