找回密码
 加入
搜索
查看: 2629|回复: 6

[AU3基础] [已解决]:软件自动安装目录问题

[复制链接]
发表于 2011-6-20 22:58:01 | 显示全部楼层 |阅读模式
本帖最后由 lidenpan 于 2011-6-21 21:45 编辑

本人是菜鸟,只会做些简单的安装脚本,常常指定软件默认安装在一个盘符内,如D盘,但是有时候装机就遇到的问题就是如果D盘不在,或者D盘没有被格式化,这时候脚本就没法安装了。有什么办法能解决这个问题呢,如果D盘不能用直接安装到默认的C盘里面去呢。。我想好多人都可能遇到这种问题。
请高手多多指教,最好能附上原码。小弟感激不尽!

底下附上360安全卫士的安装源码。。希望各位高手给予指导。。

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=G:\SoftManager\ico\360safe.ico
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <File.au3>
$variable0=" 360安全卫士 8.0.0.2001 安装"
$variable1="欢迎使用“360安全卫士”安装向导"
$variable2="最终用户授权协议"
$variable3="请选择安装位置"
$variable4="360安全卫士 安装"
$variable5="安装360安全浏览器并设为默认"
$variable6="360安全浏览器 安装"
$variable7="360安全浏览器能增强您的上网安全"
$variable8="正在完成“360安全卫士”安装向导"


$directory="D\Program Files\360\360safe"
Run("360safe正式版.exe")
TrayTip("正在安装","360safe v8.0正式版,请稍等...",5,1)
sleep(500)
WinWaitActive($variable0,$variable1)
ControlClick($variable0,$variable1,"Button2")
WinWaitActive($variable0,$variable2)
ControlClick($variable0,$variable2,"Button2")
WinWaitActive($variable0,$variable3)
ControlSetText($variable0,$variable3,"Edit1",$directory)
sleep(500)
ControlClick($variable0,$variable3,"Button2")
WinWaitActive($variable4,$variable5)
ControlClick($variable4,$variable5,"Button1")
WinWaitActive($variable6,$variable7)
ControlClick($variable6,$variable7,"Button1")
WinWaitActive($variable4,$variable5)
ControlClick($variable4,$variable5,"Button3")
WinWaitActive($variable0,$variable8)
ControlClick($variable0,$variable8,"Button4")
ControlClick($variable0,$variable8,"Button2")
sleep(500)
FileDelete(@DesktopDir&"\360软件管家.lnk")
Send ("!{F4}")  
Exit
 楼主| 发表于 2011-6-20 22:58:23 | 显示全部楼层
本帖最后由 lidenpan 于 2011-6-20 23:00 编辑

也试着用了版主的方法。但是没有成功,可能是我操作上的问题。希望大家帮我找找茬呀。。

$test = CkDrive_WS('E:', '200') ;检测D盘是否有200MB可供读写
If @Error Then
        MsgBox(0, '', 'D盘不可用,软件将安装到C盘')
        ;这里是安装到C盘的脚本
Else
        MsgBox(0, '', 'D盘可用,软件将安装到D盘')
Endif

Func CkDrive_WS($path, $mixFree)
        ;afan说明:检测指定盘符是否有足够的空间以供读写
        ;参数:$path = 需检测的盘符;$mixFree = 最小的需求空间(MB)
        ;返回值:正确返回1;错误返回0,并设置 @Error 为以下值:
        ;@Error = 1,指定的盘符不存在
        ;@Error = 2,指定的盘符为只读光盘
        ;@Error = 3,指定的盘符不可写或未格式化
        ;@Error = 4,剩余空间不足
        If Not FileExists($path) Then Return SetError(1, 0, 0)
        If DriveGetType($path) = 'CDROM' Then Return SetError(2, 0, 0)
        Local $tmp = _TempFile($path)
        FileWrite($tmp, '')
        If Not FileExists($tmp) Then Return SetError(3, 0, 0)
        FileDelete($tmp)
        Local $DSFree = DriveSpaceFree($path)
        If $DSFree < $mixFree Then Return SetError(4, 0, 0)
        Return 1
EndFunc   ;==>CkDrive_WS
 楼主| 发表于 2011-6-21 08:44:10 | 显示全部楼层
高手指点一下哈。。。都沉了。。
发表于 2011-6-21 14:33:57 | 显示全部楼层
If DriveGetType("D:\") = "Fixed" And DriveStatus("D:\") = "READY" And DriveSpaceFree("D:\") >= "200" Then
        MsgBox(4096, "判断","D盘存在已格式化并大于200MB")
Else
    MsgBox(4096, "判断", "D盘不存在或未格式化")
EndIf
发表于 2011-6-21 14:34:24 | 显示全部楼层
支持一下了嘿嘿
 楼主| 发表于 2011-6-21 16:08:40 | 显示全部楼层
回复 4# minghui


万分感谢!马上测试一下。
 楼主| 发表于 2011-6-21 21:43:59 | 显示全部楼层
回复 4# minghui


感谢版主和minghui 提供的思路已经解决问题。。。 谢谢!!!   
If DriveGetType("D:\") = "Fixed" And DriveStatus("D:\") = "READY" And DriveSpaceFree("D:\") >= "200" Then
        ControlSetText($variable0,$variable3,"Edit1",$directory)
                ;MsgBox(4096, "判断","D盘存在已格式化并大于200MB")
Else
    ControlSetText($variable0,$variable3,"Edit1","C:\Program Files\360\360safe")
        ;MsgBox(0, '', 'D盘不可用,软件将安装到C盘')
EndIf
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 01:34 , Processed in 0.114546 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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