# UpLoadDemo **Repository Path**: sageinqi/UpLoadDemo ## Basic Information - **Project Name**: UpLoadDemo - **Description**: 可以通过xml文件进行更新和打开程序的一个更新程序。适用于所有的exe可执行程序 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 9 - **Created**: 2021-05-27 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UpLoadDemo 可以通过json文件进行更新和打开程序的一个更新程序。 ## UpLoadVersion.json配置更新文件说明 UpLoadVersion.json需要放置在程序安装目录和服务器更新目录里,是重要的更新与对比的文件! ``` { "UpLoadContent": "更新提示内容", "UpLoadFileUrl": "更新的地址(带输出目录的网站地址),例:http://localhost:8888/", "ProgrmStartupDir": "更新完成后需要运行的程序", "IsAutoUpLoad": true,//是否自动更新 "UpLoadFiles": []//需要更新的文件md5值 } ``` ## IIS发布目录 * 一、添加网站 > 物理路径选择你的最新程序更新目录 > ![image](https://user-images.githubusercontent.com/30279211/119330347-b153de00-bcb8-11eb-9866-ca13bfb6dbd1.png) * 二、如果浏览网站报403 > ![image](https://user-images.githubusercontent.com/30279211/119330943-6090b500-bcb9-11eb-8636-34490ef1c977.png) > 在网站的**功能目录**中点击**目录浏览**,然后点击目录浏览右侧的**启用** > ![image](https://user-images.githubusercontent.com/30279211/119331287-c67d3c80-bcb9-11eb-8ab6-6ceadb659f0e.png) ## 生成服务器的UpLoadVersion.json文件 >找到 **UpLoadDemoXmlBuild.exe** 软件,把软件复制到需要升级的目录里。打开后,点击生成即可。 ## 调用方式,下边是C#的调用例子 > 把代码放在,program或者是 WPF的 OnStartup里 ``` string vsVersion = Environment.GetEnvironmentVariable("VisualStudioVersion"); if (string.IsNullOrEmpty(vsVersion))//根据环境变量来判断是不是在VS里调试运行 { //NoUpgrade.ini 文件是Upgrade.exe升级程序检测无升级后生成的文件,当有这个文件后,咱们的主程序就不需要进行检测更新,这是为了防止进入冒泡 string upIni = AppDomain.CurrentDomain.BaseDirectory + "NoUpgrade.ini"; //判断检测文件和升级程序是否存在,满足条件则进入升级程序 if (!System.IO.File.Exists(upIni) && System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Upgrade.exe")) { Process.Start(AppDomain.CurrentDomain.BaseDirectory + "Upgrade.exe", System.Reflection.Assembly.GetExecutingAssembly().Location);//在启动更新程序时,咱们可以传入主程序的绝对路径,有这个UpLoadVersion.json的ProgrmStartupDir可以为空 Environment.Exit(0); } //检测完毕后,下边肯定会打开主程序,咱们这里删除检测文件,这样主程序下次打开的时候就会再次检测升级。 System.IO.File.Delete(upIni); } ``` ## 测试更新 > 如图,本地现在是没有文件和信息的 > > ![image](https://user-images.githubusercontent.com/30279211/119332267-eeb96b00-bcba-11eb-9c99-888c82c231f6.png) >运行程序,会提示你更新 > >![image](https://user-images.githubusercontent.com/30279211/119332326-01cc3b00-bcbb-11eb-862a-545b30575313.png) >点击更新(IsAutoUpLoad配置为true,不用点击此按钮,会自动进行更新),开始下载,下载完成后会自动关闭更新程序,运行你**ProgrmStartupDir**里配置的程序或者 启动程序时传入的 **主程序绝对路径** > >![image](https://user-images.githubusercontent.com/30279211/119332369-101a5700-bcbb-11eb-8560-7a46a917103e.png) > 让我们看一看配置文件里有啥更改,跟服务器里的配置文件变得一模一样了 > > ![image](https://user-images.githubusercontent.com/30279211/119332586-5ff91e00-bcbb-11eb-95a0-32d033760346.png)