关于部署:是否可以使用ClickOnce部署本机Delphi应用程序

关于部署:是否可以使用ClickOnce部署本机Delphi应用程序

Is it possible to deploy a native Delphi application with ClickOnce

是否可以在没有用于启动Delphi应用程序的StubbingC#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"

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

    1.4终止此应用程序。

    1.5如果不需要更新,则应用程序将从1.1开始正常启动

  • MyApp.EXE-更新"文件名"。

    2.1尝试每100毫秒将其自身复制到" FILENAME",直到成功。

    2.2成功调用" FILENAME"

    2.3调用" FILNAME-删除MyApp-YYYY-MM-DD-HH-MM-SS.exe"将其自身删除。

    2.4终止

  • MyApp.EXE-删除"文件名"

    3.1尝试每500毫秒删除文件" FILENAME",直到成功。

    3.2终止

  • 我已经将这种方案用于我的应用程序已有7年了,并且效果很好。出错时进行调试可能会非常痛苦,因为这些步骤涉及许多流程。我建议您进行大量跟踪日志记录,以简化故障排除过程。

    祝你好运


    否,您应用的入口必须是托管代码。

    这是来自Brian Noyes的博客文章,该博客是ClickOnce的主要权威之一,也是使用ClickOnce进行智能客户端部署的作者。

    If you app is REALLY legacy (i.e. VB6, MFC, ATL, etc.), as in an unmanaged code executable, then no, you cannot deploy it as an executable through ClickOnce.

    可接受的解决方法似乎是启动主exe的托管代码Stubbingexe。


    我不确定100%是否可以在没有Stubbing的情况下完成此操作,但是本文可能会提供一些见解:

    方法:托管组件中具有COM组件的非托管应用程序的ClickOnce部署


    推荐阅读

      linux退出启动命令行?

      linux退出启动命令行?,系统,状态,档案,平台,命令,环境,模式,终端,程序,编辑,l

      linux中启动服务命令?

      linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

      linux永久启动命令?

      linux永久启动命令?,系统,服务,密码,软件,工具,电脑,位置,环境,状态,发行,lin

      linux命令行启动软件?

      linux命令行启动软件?,系统,工具,软件,位置,密码,电脑,首页,代码,环境,地方,l

      linuxu盘启动命令?

      linuxu盘启动命令?,系统,软件,工具,数据,设备,位置,盘中,电脑,第一,信息,在li

      linux应用部署命令?

      linux应用部署命令?,软件,系统,服务,管理,检测,代码,工作,密码,在线,命令,如

      linux中启动软件命令?

      linux中启动软件命令?,环境,软件,电脑,系统,工具,位置,代码,设备,时间,情况,

      命令行添加linux启动?

      命令行添加linux启动?,系统,软件,工具,环境,初级,地址,发行,命令,目录,终端,l

      linux增加自启动命令?

      linux增加自启动命令?,服务,系统,信息,工具,软件,查询系统,状态,跨行,情况,

      linux上启动脚本命令?

      linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方

      linux重新启动命令是?

      linux重新启动命令是?,系统,工作,设备,标准,命令,灵活,用户,电源,提示,主机,l

      linux启动jre命令?

      linux启动jre命令?,系统,软件,代码,环境,平台,网站,企业,中心,通用,做好,如何

      linux部署环境的命令?

      linux部署环境的命令?,环境,基础,项目,管理,软件,状态,设备,平台,网络,传播,

      linux开机启动命令行?

      linux开机启动命令行?,服务,系统,软件,标准,代码,情况,设备,工具,命令,脚本,

      linux启动浏览器命令?

      linux启动浏览器命令?,系统,情况,发行,不了,官网,环境,工具,传播,基础,软件,

      linux下启动程序命令?

      linux下启动程序命令?,系统,服务,环境,情况,数字,设备,工程,软件,命令,网上,l

      linux命令延时启动?

      linux命令延时启动?,软件,单位,时间,系统,名称,暂停,周期,底部,代码,工具,在l

      linux命令项目部署?

      linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎

      linux开启自启动命令?

      linux开启自启动命令?,服务,系统,标准,工作,设备,跨行,信息,工具,密码,状态,

      启动linux集群命令?

      启动linux集群命令?,系统,管理,技术,工具,网络,机构,设备,环境,代理,工作,如