记录一个winform bat批处理更新自身程序解决方案

1 篇文章 0 订阅

一、获得远端更新文件

通过接口获取对应需要下载的包(文件夹、文件),保存在下载文件夹下 /download,代码自己搞。。。

二、Process 执行bat文件

代码如下(示例):

            Process proc = null;
            string targetDir = Application.StartupPath;
            if (!File.Exists(targetDir + "/123.bat")) return;
            try
            {
                proc = new Process();
                proc.StartInfo.WorkingDirectory = targetDir;
                proc.StartInfo.FileName = "123.bat";
                proc.StartInfo.CreateNoWindow = false;
                proc.Start();
            }
            catch (Exception ex)
            {
#if DEBUG
                Console.WriteLine(ex.Message);
#endif
            }

二、bat文件详情

代码如下(示例):

@echo off

::隐藏窗口
:: if "%1"=="hide" goto CmdBegin
:: start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:: :CmdBegin

::提权
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

:: 进入当前目录
cd  %~dp0
tasklist | find /i "FormMain.exe"
if %errorlevel%==0 (
    echo 正在关闭更新程序...
    taskkill /f /im FormMain.exe
    echo 关闭更新程序完成...
)

echo 正在更新程序...
timeout /t 3

::更新文件夹
if exist "download/" (
    echo 有更新文件,正在更新文件...
    xcopy download\ \ /s /e /c /y /h /r
    echo 更新文件完成...
)
echo 正在启动程序...
timeout /t 3
::重新打开exe,最小化 (其他相关参数自己查询文档)
start /min "" "FormMain.exe"

echo 更新启动成功
:: echo. & pause
exit

总结

关于更新exe,一般都是采用一个子程序来监听主程序,这个子更新程序一般无改动;由于业务需求,需要更新自身程序,想到这么一个解决思路,各位大佬有其他方案,欢迎留言共同讨论!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法提供编程代码。但是,您可以按照以下步骤在WinForms应用程序中实现中英文切换: 1.创建资源文件 在Visual Studio中,右键单击项目,选择“添加”>“新建项”>“资源文件”。在资源文件中,创建两个命名为“en-US.resx”和“zh-CN.resx”的资源文件。在这些资源文件中,添加您想要在应用程序中使用的所有文本字符串。 2.在应用程序中使用资源文件 在应用程序中,使用ResourceManager类来访问资源文件中的文本字符串。例如,要显示应用程序标题,您可以使用以下代码: this.Text = Properties.Resources.AppTitle; 在这里,“Properties”是您的资源文件的名称,而“AppTitle”是资源文件中的一个字符串名称。 3.创建语言切换按钮 在应用程序中创建一个按钮,当用户单击该按钮时,应用程序将切换到另一种语言。您可以使用ToolStripButton或普通Button控件来实现这一点。 4.切换语言 当用户单击语言切换按钮时,应用程序应该切换到另一种语言。您可以使用Thread.CurrentThread.CurrentUICulture属性来更改语言。 例如,要将应用程序切换到中文,您可以使用以下代码: Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN"); 然后,您可以重新加载窗体以显示新的语言文本。您可以使用以下代码来实现: Form.ActiveForm.Close(); Form.ActiveForm.Dispose(); Form.ActiveForm = new MyForm(); Form.ActiveForm.Show(); 在这里,“MyForm”是您的应用程序中的窗体名称。 这些步骤应该能够为您提供一个简单的中英文切换功能。当然,您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值