Foxtable(狐表)用户栏目专家坐堂 → 自动升级不要弹出cmd.exe窗口


  共有6440人关注过本帖树形打印复制链接

主题:自动升级不要弹出cmd.exe窗口

帅哥哟,离线,有人找我吗?
HappyFt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
自动升级不要弹出cmd.exe窗口  发帖心情 Post By:2015/1/11 14:06:00 [只看该作者]

用了狐友提供的自动升级的确实好用

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40763&authorid=0&page=0&star=1

但就是有个问题下面这段代码运行后总会先打开一个Cmd.exe的一个升级窗口,很多用户升级时xp都会拦掉这个文件或提示;部分代码如下文件中

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动升级部份代码.txt

 

    'Dim up1 As String = utmp & "\up1.vbs"
    'If FileSys.FileExists(up1) Then
    'FileSys.DeleteFile(up1)
    'End If
    'FileSys.WriteAllText(up1,"Set ws = CreateObject(""Wscript.Shell"")" & vbcrlf,True,Encoding.Default)
    'FileSys.WriteAllText(up1,"ws.run ""cmd /c Update.bat"",vbhide",True,Encoding.Default)

网上查了很久有介绍说把批处理保存为一个VBS的文件如上面红色部份就不会弹出Cmd窗口,但总不成功。现在就是想实现在升级时象QQ等那样,前面只是显示一个正在升级的窗口就行,那些批处理都在后台运行不要显示出来,升级完正常打开程序就可以,要怎么才能实现?ft的方式每次升级完还要提示重新启动不能自动打开也不好?

谢谢!


 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/11 15:21:00 [只看该作者]

呃,加参数

 

shell("d:\test.bat", 0)


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/15 17:55:00 [只看该作者]

为什么最近写多点文本上传总出错,传不了,只好写在下面的文本文件中了,谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:不弹出cmd窗口问题.txt


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 18:04:00 [只看该作者]

 不需要创建啊,直接写就是创建和清空了啊

 

FileSys.WriteAllText(up_vbs,"Set ws = CreateObject(""Wscript.Shell"")" & vbcrlf,False,Encoding.Default)


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/15 18:22:00 [只看该作者]

但第二句如下,总提示出错没有申明updat.bat变量,不知道是哪个引号没对,要怎么写?

FileSys.WriteAllText(up_vbs,"ws.run "" & utmp & "\Update.bat" & "",0",True,Encoding.Default)

 

要调用utmp这个变量所代表的目录下的update.bat文件。就是把

ws.run "c:\Update.bat",0  这样的目录C:\换成变量utmp总是写不对。

[此贴子已经被作者于2015-1-15 18:29:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 19:04:00 [只看该作者]

FileSys.WriteAllText(up_vbs,"ws.run """ & utmp & "\Update.bat" & """,0",True, Encoding.Default)

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/15 21:18:00 [只看该作者]

谢谢,原来是还要加一个双引号,@echo off
taskkill /f /im foxtable.exe
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
Delay.vbs 3
del Delay.vbs
xcopy /s /e /q /y " & utmp1 & "\*.* " & upath
start " & ProjectPath & "..\" & ename

rd /s /q " & utmp

 

还有个问题,如果update.bat文件中有参数,运行

FileSys.WriteAllText(up_vbs,"ws.run """ & utmp & "\Update.bat" & """,0",True, Encoding.Default)

时如何传递给bat文件,bat文件中又要如何接收呢?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 21:24:00 [只看该作者]

 呃,bat文件是你生成的,要怎么控制,就在前面控制,无法传递参数的。

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/16 12:44:00 [只看该作者]

'---通过VBS执行批处理避免弹出CMD窗口
Dim up_vbs As String = utmp & "\up_vbs.vbs"
FileSys.WriteAllText(up_vbs,"Set ws = CreateObject(""Wscript.Shell"")" & vbcrlf,false,Encoding.Default)
FileSys.WriteAllText(up_vbs,"ws.run ""cmd /c " & utmp & "\Update.bat" & """,vbhide",True,Encoding.Default)

 

Dim Proc As New Process '定义一个新的Process
Proc.File = up_vbs '指定要打开的文件
Proc.Verb = "Open" '指定动作
Proc.Start()
proc.WaitForExit

 

通过上面的代码升级时是可以不显显cmd窗口,但还有个问题,就是每次下载升级包完成后电脑屏幕都会闪烁一下,好象在运行升级代码前项目窗口打开又突然关掉一样。是否要在Proc.Start()前要用什么代码先退出项目才能避免?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/16 14:11:00 [只看该作者]

 呃,没测试过你说的闪烁问题,直接写试试

 

shell(""" & utmp & "\Update.bat" & """, 0)


 回到顶部
总数 12 1 2 下一页