c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序相关的知识,希望对你有一定的参考价值。
写了一个C#的Winform程序,程序的启动步骤如下:
链接web service检查是否有新版本。
若存在新版本,提示消息。
关闭消息窗口后,启动update.exe更新程序并结束主程序。
问题来了:
现在通过打包MSI的方式通过AD域控制器部署到终端,终端在开机时能够自动启动程序,也会有新版本的消息提醒窗口,但是关闭消息窗口后不会启动update.exe更新程序。但是手动启动应用程序就可以正常启动更新程序。请高手帮忙解释一下这是什么问题?
在win7 和XP下均如此
谢谢。因为更新程序可能包含主程序,所以需要关闭主程序进程。
所以在调用进程启动update.exe后将主程序关闭了。(不关闭也试过,也启动不了)
在启动update.exe时检查了进程列表中是否存在主程序,若存在的话update.exe也会kill掉主程序。
你为什么不在开机时直接启动update.exe呢,在update中进行版本的检测?
追问惭愧,程序写的很简陋,第一次写winform程序,没什么经验。
因为主程序启动时会检查是否存在Update.exe的更新,如果有的话先更新Update.exe。
而且也没怎么搞过打包解压之类的,只好一个程序控制另外一个程序的更新了。
更新程序update.exe与主程序在同一目录下。
用Application.StartupPath
你的代码是不是这麼取的
string updatePath = Application.StartupPath +“\\update.exe”;
System.Diagnostics.Process.Start( Application.StartupPath + @“\update.exe");
但是手工启动的主程序的时候是可以启动update.exe的啊。。。。
再看一下自动启动程序时程序是否都能把配置文件读取到,我之前也碰到这种情况,就是因为没读取到配置文件导致的
追问谢谢你,惭愧的是我没把update路径配置在配置文件里,直接写在代码里了。。。。
追答public static bool CheckUpdate()bool noUpdate = false;
try
SettingSystem.LoadSetting();
string newVersion = GetVersion();
if (newVersion != SettingSystem.Version)
noUpdate = true;
SettingSystem.SaveSetting(newVersion);
Process.Start(AppDomain.CurrentDomain.BaseDirectory + "Update.exe");
return noUpdate;
catch (Exception e)
System.Windows.Forms.MessageBox.Show("检查更新失败!" + e.Message);
SettingSystem.SaveSetting();
return noUpdate;
上面代码我能达到自动更新
非常感谢你贴出来的代码。
你是从安装目录中找吗?
也是从主程序的路径啊
追问AppDomain.CurrentDomain.BaseDirectory
头次写winform程序,这个不知道。惭愧。
准备下班吃饭,晚上回去跟您再继续。
非常感谢您耐心的解答。
??????
追问不好意思,那天下班以后晚上出门了,今天才回来。一直在想您说的那些,的确是有可能的,是不是系统启动的时候程序执行的默认路径和手工启动不一样。这个我明天上班试一试,非常感谢您的关心。咱可以邮件交流么?kelileisi_feng@sina.com
追答我觉得是程序开机启动时导致程序获取不到当前路径导致的,具体原因还没弄清楚,你可以百度或Google下 ”c# 获取可执行文件路径方法“ ,有好多种取法,多试几个应该会找到一个可用的。
本回答被提问者和网友采纳在C# winform 程序里设置 DataGrid 为只读属性。
参考技术A VS2005智能设备上,你只放DataGrid,不要设置click事件,貌似这个datagrid就是只读的,并不像在windows上点击单元格可以进行编辑,我想你设置只读属性的目的是为了防止表里的数据被修改吧,那就别设置datagrid的任何点击事件,只显示数据就行了 参考技术B 哦~那你题目有问题了~那个是手机程序开发,不是winfrom~winfrom是指windows应用程序
而且只读这个很难修改的说~一般就是enable,只读也就ReadOnly
属性=true
以上是关于c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序的主要内容,如果未能解决你的问题,请参考以下文章
C#winform做了个简单的应用软件,里面有设置功能,但是每次启动都要重新设置,怎么才能记住我的设置?