是否可以使用ClickOnce部署本机Delphi应用程序而不使用将用于启动Delphi应用程序的存根C#exe?
同样的问题适用于VB6,C++和其他本机Windows应用程序.
就个人而言,当我的应用程序时间戳与服务器不同步时,我构建了自己的机制来启动自我更新过程.不太难,但这不是一项简单的任务.
顺便说一句,对于Delphi,您可以使用第三方帮助:
http://www.tmssoftware.com/site/wupdate.asp
更新:
对于我的实施:
MyApp.EXE将以3种不同的模式运行
MyApp.EXE没有任何参数.这通常会启动应用程序.
1.1它首先要做的是用服务器验证自己的文件时间.
1.2如果需要更新,则会将更新的文件下载到名为"MyApp-YYYY-MM-DD-HH-MM-SS.exe"的文件中
1.3然后用命令参数调用"MyApp -YYYY-MM-DD-HH-MM-SS.exe"
MyApp-YYYY-MM-DD-HH-MM-SS.exe --update MyApp.EXE
1.4终止此应用程序.
1.5如果不需要更新,则应用程序将从1.1正常启动
MyApp.EXE - 更新"FILENAME".
2.1尝试每100毫秒将自身复制到"FILENAME",直到成功为止.
2.2成功时调用"FILENAME"
2.3调用"FILNAME - 删除MyApp-YYYY-MM-DD-HH-MM-SS.exe"删除自身.
2.4终止
MyApp.EXE - 删除"FILENAME"
3.1尝试每500ms删除文件"FILENAME",直到成功为止.
3.2终止
我已经将这个方案用于我的应用程序7年了,它运作良好.由于步骤涉及许多过程,因此在出现问题时进行调试可能会非常痛苦.我建议你进行大量的跟踪记录,以便更简单的故障排除.
祝好运