是否可以在没有用于启动 Delphi 应用程序的存根 C# exe 的情况下使用 ClickOnce 部署本机 Delphi 应用程序?
同样的问题适用于 VB6、C++ 和其他本地 Windows 应用程序。
是否可以在没有用于启动 Delphi 应用程序的存根 C# exe 的情况下使用 ClickOnce 部署本机 Delphi 应用程序?
同样的问题适用于 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——更新“文件名”。
2.1 尝试每 100 毫秒将自身复制到“文件名”,直到成功。
2.2 成功时调用“FILENAME”
2.3 调用“FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe”删除自身。
2.4 终止
MyApp.EXE --删除“文件名”
3.1 尝试每 500 毫秒删除一次文件“FILENAME”,直到成功。
3.2 终止
我已经在我的应用程序中使用了这个方案 7 年并且效果很好。当出现问题时调试可能会非常痛苦,因为这些步骤涉及许多过程。我建议您进行大量跟踪记录,以便更简单地进行故障排除。
祝你好运
不,您的应用程序的入口点需要是托管代码。
这是来自 Brian Noyes 的博客文章,他是 ClickOnce 的主要作者之一,也是Smart Client Deployment with ClickOnce的作者。
如果您的应用程序确实是旧的(即 VB6、MFC、ATL 等),例如在非托管代码可执行文件中,那么不,您不能通过 ClickOnce 将其部署为可执行文件。
公认的解决方法似乎是启动主 exe 的托管代码存根 exe。
我不能 100% 确定这是否可以在没有存根的情况下完成,但这篇文章可能会提供一些见解: