我将程序打包之后给用户安装,有一些电脑一直用着,没有出现什么问题,但是现在增加了3台电脑,我的软件安装之后,第一次运行没有问题,但是关闭之后重新运行就不行了,把软件卸载了重新安装也不行,只有将安装目录的文件夹全部删除之后再重新安装才可以使用,但是只要一关闭就又不行了,根本找不到问题出在哪里,我用的是VS自带的打包工具,后来我又找了一个Inno Setup来打包,结果问题还是一样的出来,唯一值得提一下的就是程序每次加载的时候会检测 一下版本,具体是这样的:首先Ping一下服务器A,如果Ping的通则会从服务器A上面下载一个更新的工具到本地。如果Ping不通服务器A,就会从服务器B上面来下载一些文件,别的就没什么值得说的了。
连接服务器的代码如下:
if (CheckIP().ToUpper().Trim() == "SUCCESS")
{
NETRESOURCE myNetResource = new NETRESOURCE();
myNetResource.dwScope = 2;
myNetResource.dwType = 1;
myNetResource.dwDisplayType = 3;
myNetResource.dwUsage = 1;
myNetResource.LocalName = "T:";
myNetResource.RemoteName = @"\\ServerName\apps\CMSMES\MesUpdate.exe";
myNetResource.Provider = null;
uint nret = WNetAddConnection2(myNetResource, "UserPwd", "UserName", 0);
System.IO.File.Copy(@"\\ServerName\apps\CMSMES\MesUpdate.exe", @"C:\Program Files\CMS\MesUpdate.exe", true);
}
else
{
NETRESOURCE myNetResource = new NETRESOURCE();
myNetResource.dwScope = 2;
myNetResource.dwType = 1;
myNetResource.dwDisplayType = 3;
myNetResource.dwUsage = 1;
myNetResource.LocalName = "T:";
myNetResource.RemoteName = @"\\ServerName\update\CMS.MES\MES\MesUpdate.exe";
myNetResource.Provider = null;
uint nret = WNetAddConnection2(myNetResource, "UserPwd", "UserName", 0);
System.IO.File.Copy(@"\\ServerName\update\CMS.MES\MES\MesUpdate.exe", @"C:\Program Files\CMS\MesUpdate.exe", true);
}
你这个更新好像只更是替换了.exe程序,你看看是不是有什么dll缺失
这里貌似都还没有到更新那一步啊,程序安装好了以后第一次打开没问题,也不需要更新,但是关掉之后重新打开就出现上面的错误了,还没到更新的时候啊。
无意中发现只要将EXE文件设置为以兼容模式运行就可以了,但是很多电脑没有这样设置也没有问题,不知道为什么。。。
收藏