Frage

Ist es möglich, eine native Delphi-Anwendung mit ClickOnce ohne eine Stub-C#-Exe bereitzustellen, die zum Starten der Delphi-Anwendung verwendet würde?

Die gleiche Frage gilt für VB6, C++ und andere native Windows-Anwendungen.

War es hilfreich?

Lösung

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

Für Delphi können Sie übrigens die Hilfe von Drittanbietern nutzen:

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

AKTUALISIERT:

Für meine Umsetzung:

MyApp.EXE wird in drei verschiedenen Modi ausgeführt

  1. MyApp.EXE ohne Argument.Dadurch wird die Anwendung normalerweise gestartet.

    1.1 Das allererste, was es tut, ist, seine eigene Dateizeit mit dem Server zu validieren.

    1.2 Wenn eine Aktualisierung erforderlich ist, wird die aktualisierte Datei in die Datei mit dem Namen „MyApp-YYYY-MM-DD-HH-MM-SS.exe“ heruntergeladen.

    1.3 Dann ruft es „MyApp-YYYY-MM-DD-HH-MM-SS.exe“ mit dem Befehlsargument auf

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

    1.4 Beenden Sie diese Anwendung.

    1.5 Wenn kein Update erforderlich ist, startet die Anwendung normal ab 1.1

  2. MyApp.EXE --update „DATEINAME“.

    2.1 Versuchen Sie, sich alle 100 ms nach „FILENAME“ zu kopieren, bis der Erfolg gelingt.

    2.2 Rufen Sie „FILENAME“ auf, wenn es erfolgreich ist

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

    2.4 Beenden

  3. MyApp.EXE --delete „DATEINAME“

    3.1 Versuchen Sie, die Datei „FILENAME“ alle 500 ms zu löschen, bis der Erfolg gelingt.

    3.2 Beenden

Ich verwende dieses Schema bereits seit 7 Jahren für meine Bewerbung und es funktioniert gut.Das Debuggen kann sehr mühsam sein, wenn etwas schief geht, da die Schritte viele Prozesse umfassen.Ich schlage vor, dass Sie umfangreiche Trace-Protokolle durchführen, um die Fehlerbehebung zu vereinfachen.

Viel Glück

Andere Tipps

Nein, der Einstiegspunkt zu Ihrer App muss verwalteter Code sein.

Das ist von a Blogeintrag von Brian Noyes, einem der Hauptautoren von ClickOnce und Autor von Intelligente Client-Bereitstellung mit ClickOnce.

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

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

Ich bin mir nicht 100 % sicher, ob dies ohne den Stub möglich ist, aber dieser Artikel könnte einen Einblick geben:

Wie man:ClickOnce-Bereitstellung für nicht verwaltete Apps mit COM-Komponente in verwalteter Assembly

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