Is it possible to deploy a native Delphi application with ClickOnce

clickonce, delphi, deployment

Solution

Personally, I build my own mechanism to kick off self update process when my application timestamp is out of sync with the server. Not too difficult, but it's not a simple task.

By the way, for Delphi you can use some thirdparty help:

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

UPDATED:

For my implementation:

MyApp.EXE will run in 3 different modes

MyApp.EXE without any argument. This will start the application typically.

1.1 The very first thing it does is to validate its own file-time with the server.

1.2 If update is required then it will download the updated file to the file named "MyApp-YYYY-MM-DD-HH-MM-SS.exe"

1.3 Then it invoke "MyApp-YYYY-MM-DD-HH-MM-SS.exe" with command argument

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

1.4 Terminate this application.

1.5 If there is no update required then the application will start normally from 1.1

MyApp.EXE --update "FILENAME".

2.1 Try copying itself to "FILENAME" every 100ms until success.

2.2 Invoke "FILENAME" when it success

2.3 Invoke "FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe" to delete itself.

2.4 Terminate

MyApp.EXE --delete "FILENAME"

3.1 Try deleting the file "FILENAME" every 500ms until success.

3.2 Terminate

I've already been using this scheme for my application for 7 years and it works well. It could be quite painful to debug when things goes wrong since the steps involve many processes. I suggest you make a lot of trace logging to allow simpler trouble-shooting.

Good Luck

Problem

Is it possible to deploy a native Delphi application with ClickOnce without a stub C# exe that would be used to launch the Delphi application? The same question applies to VB6, C++ and other native Windows applications.

Original source