找回密码
 加入
搜索
查看: 3812|回复: 5

[AU3基础] [已解决]请问自动安装QQ的脚本有什么问题,无法成功安装?

[复制链接]
发表于 2012-7-27 16:01:02 | 显示全部楼层 |阅读模式
本帖最后由 allspark 于 2012-9-2 17:05 编辑

作为个菜鸟,对着视频学习!为什么照视频写的脚本,安装时经常有警告音、然后有时会卡主不能运行下去,要取消的选项也不尽人意???自动安装文件为QQ2012.。。

Run(@ScriptDir&"\QQ2012beta3.exe")
WinWaitActive("腾讯QQ2012 安装向导","我已阅读并同意软件许可协议和青少年上网安全指引")
ControlClick("腾讯QQ2012 安装向导","","Button1")
Send("!n")
WinWaitActive("腾讯QQ2012 安装向导","自定义安装选项","")
ControlClick("腾讯QQ2012 安装向导","","Button9")
ControlClick("腾讯QQ2012 安装向导","","Button12")
ControlClick("腾讯QQ2012 安装向导","","Button17")
ControlClick("腾讯QQ2012 安装向导","","Button18")
Send("!n")
WinWaitActive("腾讯QQ2012 安装向导","保存到安装目录下","")
ControlClick("腾讯QQ2012 安装向导","","Button7")
Send("!i")
WinWaitActive("腾讯QQ2012 安装向导","安装完成","")
ControlClick("腾讯QQ2012 安装向导","","Button8")
ControlClick("腾讯QQ2012 安装向导","","Button6")
ControlClick("腾讯QQ2012 安装向导","","Button9")
ControlClick("腾讯QQ2012 安装向导","","Button7")
Send("!f")
发表于 2012-7-27 18:13:41 | 显示全部楼层
楼主试试我的源码
        Run(@ScriptDir & "\qq2012_beta3.exe")
        
        Local $Title="腾讯QQ2012 安装向导"
        SendKeepActive($Title)
        
        Local $Text1="在安装软件前"
        WinWait($Title,$Text1)
        WinActivate($Title,$Text1)
        ControlCommand($Title,"我已阅读并同意软件许可协议和青少年上网安全指引","Button1","Check")
        Sleep(300)
        Send("!N")
        
        Local $Text2="自定义安装选项"
        WinWait($Title,$Text2)
        WinActivate($Title,$Text2)
        ControlCommand($Title,"安装QQ工具栏及中文搜搜","Button9","UnCheck")
        Sleep(300)
    ControlCommand($Title,"安装QQ音乐播放器","Button12","UnCheck")
    Sleep(300)
        ControlCommand($Title,"安装腾讯视频播放器","Button17","UnCheck")
    Sleep(300)
        ControlCommand($Title,"免费独享QQ等级双倍加速 QQ电脑管家+金山毒霸保护帐号安全","Button18","UnCheck")
        Sleep(300)
        
        Local $Text3="快捷方式选项"
        WinWait($Title,$Text3)
        WinActivate($Title,$Text3)        
        ControlCommand($Title,"快速启动栏","Button7","UnCheck")
        Sleep(300)
        Send("!N")
        
        Local $Text4="程序安装目录"
        WinWait($Title,$Text4)
        WinActivate($Title,$Text4)
        ControlSetText($Title,$Text4,"Edit1","D:\Program Files\Tencent\QQ") ;安装路径
        Sleep(300)
        Send("!I")
        
        If WinExists($Title, "软件更新方式") Then
    WinActivate($Title, "软件更新方式")
    ControlCommand($Title, "软件更新方式", "Button2", "Check", "") 
        Sleep(300)
    Send("!N")
    EndIf 
        
        Local $Text5="安装完成"
        WinWait($Title,$Text5)
        WinActivate($Title,$Text5)        
        ControlCommand($Title,"开机时自动启动腾讯QQ2012","Button8","UnCheck") ;项目选择、取消,以下一项相同
    Sleep(300)
        ControlCommand($Title,"立即运行腾讯QQ2012","Button6","UnCheck")
    Sleep(300)
        ControlCommand($Title,"设置腾讯网为主页","Button9","UnCheck")
    Sleep(300)
        ControlCommand($Title,"显示新特性","Button7","UnCheck")
        Sleep(300)
        Send("!F")
        
        FileDelete(@DesktopDir & "\WebQQ.url")
    FileDelete(@DesktopCommonDir & "\WebQQ.url")
 楼主| 发表于 2012-7-28 19:34:17 | 显示全部楼层
回复 2# yinbinly


    多谢回复,话说你的脚本运行起来严密很多,虽然现在有些还看不懂。。。
  就是想知道为什么自己的有时可以,有时不行?
发表于 2012-7-29 02:50:34 | 显示全部楼层
本帖最后由 xlj310 于 2012-7-29 02:52 编辑

回复 3# allspark


    希望我的代码对你的问题有所帮助,我的代码是完整的,你可以尝试运行一次。其实有很多安装程序是找不到控件的,所以你这算是简单的了。
需要说明的是,我是在Win7下编写的,所以有些代码可能你用不到!但如果脚本可能在Win7上运行的话,还是要考虑进去的
Run(@ScriptDir&"\QQ2012beta3.exe")
If WinWait("腾讯QQ2012 安装向导","检测到QQ正在运行",1) Then
        TrayTip("检测到QQ正在运行","QQ将被强制关闭并继续更新……",5)
        Sleep(1000)
        ControlClick("腾讯QQ2012 安装向导","检测到QQ正在运行","Button2")
ElseIf WinWait("腾讯QQ2012 安装向导","腾讯QQ安装程序已经在运行。",1) Then
        TrayTip("QQ安装程序已经在运行……","请等待另一安装程序运行完毕!",5)
        Sleep(5000)
        Exit
EndIf        
WinWait("腾讯QQ2012 安装向导","我已阅读并同意软件许可协议和青少年上网安全指引")
WinActivate("腾讯QQ2012 安装向导","我已阅读并同意软件许可协议和青少年上网安全指引")
;~ ControlClick("腾讯QQ2012 安装向导","","Button1")
;上面语句中的窗口文本可以写出来,并且筛选框可以用ControlCommand("窗口标题","窗口文本","控件名称+序号","Check","")来保持选定状态,如下:
ControlCommand("腾讯QQ2012 安装向导","我已阅读并同意软件许可协议和青少年上网安全指引","Button1","Check","")
;~ Send("!n")
;使用ControlClick可以实现后台点击,即便是“腾讯QQ2012 安装向导”不在激活状态下也可以被成功点击!
ControlClick("腾讯QQ2012 安装向导","我已阅读并同意软件许可协议和青少年上网安全指引","Button3")

WinWait("腾讯QQ2012 安装向导","自定义安装选项")
WinActivate("腾讯QQ2012 安装向导","自定义安装选项")
;~ ControlClick("腾讯QQ2012 安装向导","自定义安装选项","Button9")
;~ ControlClick("腾讯QQ2012 安装向导","自定义安装选项","Button12")
;~ ControlClick("腾讯QQ2012 安装向导","自定义安装选项","Button17")
;~ ControlClick("腾讯QQ2012 安装向导","自定义安装选项","Button18")
ControlCommand("腾讯QQ2012 安装向导","自定义安装选项","Button9","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","自定义安装选项","Button12","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","自定义安装选项","Button17","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","自定义安装选项","Button18","UnCheck","")
;~ Send("!n")
ControlClick("腾讯QQ2012 安装向导","自定义安装选项","Button2")

WinWait("腾讯QQ2012 安装向导","保存到安装目录下")
WinActivate("腾讯QQ2012 安装向导","保存到安装目录下")
ControlClick("腾讯QQ2012 安装向导","保存到安装目录下","Button7")
ControlSetText("腾讯QQ2012 安装向导","保存到安装目录下","Edit1","C:\Program Files\Tencent\QQ");这里是设置安装目录

;~ Send("!i")
ControlClick("腾讯QQ2012 安装向导","保存到安装目录下","Button2")

If WinWait("腾讯QQ2012 安装向导","个人文件夹保存位置无效",1) Then
        ControlClick("腾讯QQ2012 安装向导","个人文件夹保存位置无效","Button4")
        ControlClick("腾讯QQ2012 安装向导","保存到安装目录下","Button8");安装到“我的文档”
        ControlClick("腾讯QQ2012 安装向导","保存到安装目录下","Button2");下一步
EndIf
TrayTip("正在安装QQ2012Beta3","此过程可能需要两到三分钟,请耐心等待……",1)
WinWait("腾讯QQ2012 安装向导","安装完成")
WinActivate("腾讯QQ2012 安装向导","安装完成")
;~ ControlClick("腾讯QQ2012 安装向导","","Button8")
;~ ControlClick("腾讯QQ2012 安装向导","","Button6")
;~ ControlClick("腾讯QQ2012 安装向导","","Button9")
;~ ControlClick("腾讯QQ2012 安装向导","","Button7")
ControlCommand("腾讯QQ2012 安装向导","安装完成","Button8","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","安装完成","Button6","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","安装完成","Button9","UnCheck","")
ControlCommand("腾讯QQ2012 安装向导","安装完成","Button7","UnCheck","")
;~ Send("!f")
ControlClick("腾讯QQ2012 安装向导","安装完成","Button2");点击完成

If WinWait("QQ数据迁移","",5) Then ;WinWaitClose("QQ数据迁移");可能会遇到数据迁移,本脚本不负责关闭,需要关闭,可以自己再想办法(在下面已经给出答案)
        While 1
                Local $size = WinGetClientSize("QQ数据迁移");回答上面的问题,本来这里想留给你做家庭作业的,算了,还是贴出来吧,免得你想破脑袋都想不出来!自己把上面的if语句改一下即可使用!
                If $size[1]=159 Then 
                        WinClose("QQ数据迁移");回答上面的问题,把WinWaitClose语句删除,然后让if语句包含这两句代码,再加上一句endif
                        ExitLoop
                EndIf
                $i=1                
                Do
                        $text=""
                        For $j=1 To $i
                                $text &= "  ."
                        Next
                        TrayTip("QQ2012正在迁移数据","请耐心等待"&$text,5)
                        $i+=1;每次自减1
                        Sleep(1000)
                Until $i>5
        WEnd
EndIf
$i=5
Do
        TrayTip("QQ2012 Beta3安装完成 "&$i,"感谢您使用“逗你玩!”安装程序!",5)
        $i-=1;每次自减1
        Sleep(1000)
Until $i<1

评分

参与人数 1金钱 +10 收起 理由
yinbinly + 10 好想法 一般我都是新装QQ 么有数据

查看全部评分

发表于 2012-7-29 11:58:39 | 显示全部楼层
在Win7下如果以前安装过QQ2012,再次安装的时候,如果路径修改了的话,就会自动进行数据迁移。 
貌似是装在C盘下的时候聊天记录会保存到我的文档里(可能是聊天记录不允许写入C盘吧)
而装在其他盘的话聊天记录就可以放在安装盘下。
 楼主| 发表于 2012-7-29 17:19:35 | 显示全部楼层
回复 5# xlj310


    xp下也会数据迁移!2011以后的安装都可以直接放在安装目录下了!谢谢回复
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-14 15:10 , Processed in 0.075042 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表