是否可以使用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年了,它运行良好.由于步骤涉及许多过程,因此在出现问题时进行调试可能会非常痛苦.我建议你进行大量的跟踪记录,以便更简单的故障排除.
祝好运