Domanda

È possibile distribuire un'applicazione Delphi nativa con ClickOnce senza un exe stub C# da utilizzare per avviare l'applicazione Delphi?

La stessa domanda vale per VB6, C++ e altre applicazioni native di Windows.

È stato utile?

Soluzione

Personalmente, creo il mio meccanismo per avviare il processo di aggiornamento automatico quando il timestamp della mia applicazione non è sincronizzato con il server.Non troppo difficile, ma non è un compito semplice.

A proposito, per Delphi puoi utilizzare l'aiuto di terze parti:

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

AGGIORNATO:

Per la mia implementazione:

MyApp.EXE verrà eseguito in 3 diverse modalità

  1. MyApp.EXE senza alcun argomento.Questo avvierà normalmente l'applicazione.

    1.1 La prima cosa che fa è convalidare il proprio file-time con il server.

    1.2 Se è richiesto un aggiornamento, il file aggiornato verrà scaricato nel file denominato "MyApp-YYYY-MM-DD-HH-MM-SS.exe"

    1.3 Quindi invoca "MyApp-YYYY-MM-DD-HH-MM-SS.exe" con l'argomento del comando

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

    1.4 Terminare questa applicazione.

    1.5 Se non è richiesto alcun aggiornamento, l'applicazione verrà avviata normalmente dalla 1.1

  2. MyApp.EXE --aggiornamento "FILENAME".

    2.1 Prova a copiarsi su "FILENAME" ogni 100 ms fino al successo.

    2.2 Invocare "FILENAME" quando ha successo

    2.3 Richiamare "FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe" per cancellarsi.

    2.4 Terminare

  3. MyApp.EXE --elimina "NOMEFILE"

    3.1 Prova a eliminare il file "FILENAME" ogni 500 ms fino al successo.

    3.2 Terminare

Utilizzo questo schema per la mia domanda già da 7 anni e funziona bene.Potrebbe essere piuttosto complicato eseguire il debug quando le cose vanno male poiché i passaggi coinvolgono molti processi.Ti suggerisco di effettuare molte registrazioni di traccia per consentire una risoluzione dei problemi più semplice.

Buona fortuna

Altri suggerimenti

No, il punto di ingresso alla tua app deve essere un codice gestito.

Questo è da a post sul blog di Brian Noyes, uno dei principali autori di ClickOnce e autore di Distribuzione Smart Client con ClickOnce.

Se la tua app è VERAMENTE legacy (ad es.VB6, MFC, ATL e così via), come in un codice eseguibile non gestito, allora no, non è possibile distribuirlo come eseguibile tramite ClickOnce.

La soluzione alternativa accettata sembra essere uno stub exe di codice gestito che avvia l'exe principale.

Non sono sicuro al 100% che ciò possa essere realizzato senza lo stub, ma questo articolo può fornire alcune informazioni:

Come:Distribuzione ClickOnce per un'app non gestita con componente COM nell'assembly gestito

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top