软件安装管理
#Region ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\软件安装管理.ico
#AutoIt3Wrapper_outfile=..\..\软件安装管理.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseAnsi=y
#AutoIt3Wrapper_Res_Description=软件安装管理
#AutoIt3Wrapper_Res_Fileversion=1.2.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JS
#AutoIt3Wrapper_Res_SaveSource=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>
#NoTrayIcon
;==>设定配置文件
$ExeName = StringSplit(@ScriptName, ".")
$IniName = $ExeName[1] & ".ini"
;==>检测配置文件,没有则自动生成
If FileExists($IniName) = 0 Then
MsgBox(262160, "找不到文件", "找不到" & Chr(34) & $IniName & Chr(34) & "文件,将自动生成并退出。")
FileInstall("软件安装管理.ini", $IniName)
Exit
EndIf
;==>创建程序界面
GUICreate(IniRead($IniName, "总设置", "标题", "软件安装选项"), 300, 360, -1, -1)
;==>文本1
GUICtrlCreateLabel(IniRead($IniName, "总设置", "说明文字1", ""), 10, 10, 280, 48)
GUICtrlCreateGroup("", -2, 51, 999, 999) ;==>分隔符
;==>文本2
GUICtrlCreateLabel(IniRead($IniName, "总设置", "说明文字2", ""), 15, 285, 270, 35)
GUICtrlCreateGroup("", -2, 245, 999, 999) ;==>分隔符
;==>倒计时
$Progress = GUICtrlCreateProgress(10, 260, 200, 10)
$Time = IniRead($IniName, "总设置", "倒计时", "10")
$CountDown = $Time
$CountDownText = GUICtrlCreateLabel("剩余时间:" & $CountDown & "s", 220, 260, 75, 11)
;==>界面按钮
$OK = GUICtrlCreateButton("确定", 15, 320, 60, 20)
$Manual = GUICtrlCreateButton("手动安装", 85, 320, 60, 20)
$CheckAll = GUICtrlCreateButton("全选", 155, 320, 60, 20)
$CheckNone = GUICtrlCreateButton("全不选", 225, 320, 60, 20)
;==>版权信息
GUICtrlCreateLabel(IniRead($IniName, "总设置", "版权信息", "by JS"), 250, 345, 50, 30)
GUICtrlSetFont(-1, 9, 400, 2, "gulim")
;==>软件列表
GUICtrlCreateGroup("本系统集成软件", 5, 64, 290, 173)
$TreeList = GUICtrlCreateTreeView(10, 80, 280, 150, $TVS_CHECKBOXES)
$Var1 = IniRead($IniName, "总设置", "软件数量", "10") ;==>读取软件个数
Dim $CheckBox[$Var1 + 1] ;==>声明关键变量
For $Var2 = 1 To $Var1 Step 1
$CheckBox[$Var2] = GUICtrlCreateTreeViewItem(IniRead($IniName, $Var2, "名称", ""), $TreeList) ;==>读取名称,创建列表项目
$CheckBoxMenu = GUICtrlCreateContextMenu($CheckBox[$Var2]) ;==>建立右键菜单
GUICtrlCreateMenuItem("版本:" & IniRead($IniName, $Var2, "版本", ""), $CheckBoxMenu)
GUICtrlCreateMenuItem("出品:" & IniRead($IniName, $Var2, "出品", ""), $CheckBoxMenu)
GUICtrlCreateMenuItem("大小:" & IniRead($IniName, $Var2, "大小", ""), $CheckBoxMenu)
GUICtrlCreateMenuItem("更新:" & IniRead($IniName, $Var2, "更新", ""), $CheckBoxMenu)
If IniRead($IniName, $Var2, "默认点选", "0") = 1 Then GUICtrlSetState($CheckBox[$Var2], $GUI_CHECKED)
Next
$CLOSE = "允许关闭" ;==>设定允许关闭
GUISetState(@SW_SHOW)
AdlibEnable("CountDown", 1000)
While 1
$msg = GUIGetMsg()
For $Var2 = 1 To $Var1 Step 1
If $msg = $CheckBox[$Var2] Then
If IniRead($IniName, $Var2, "强制点选", "0") <> 0 Then GUICtrlSetState($CheckBox[$Var2], $GUI_CHECKED)
ControlHide("软件安装选项", "", $CountDownText)
AdlibDisable()
EndIf
Next
Select
Case $msg = $GUI_EVENT_CLOSE ;==>关闭请求
If $CLOSE = "允许关闭" Then ExitLoop
Case $msg = $CheckAll ;==>全选
ControlHide("软件安装选项", "", $CountDownText)
AdlibDisable()
For $Var2 = 1 To $Var1 Step 1
GUICtrlSetState($CheckBox[$Var2], $GUI_CHECKED)
Next
Case $msg = $CheckNone ;==>全不选
ControlHide("软件安装选项", "", $CountDownText)
AdlibDisable()
For $Var2 = 1 To $Var1 Step 1
GUICtrlSetState($CheckBox[$Var2], $GUI_UNCHECKED)
If IniRead($IniName, $Var2, "强制点选", "0") <> 0 Then GUICtrlSetState($CheckBox[$Var2], $GUI_CHECKED)
Next
Case $msg = $OK ;==>确定
ControlHide("软件安装选项", "", $CountDownText)
AdlibDisable()
;禁止按钮
GUICtrlSetState($OK, $GUI_DISABLE)
GUICtrlSetState($Manual, $GUI_DISABLE)
GUICtrlSetState($CheckAll, $GUI_DISABLE)
GUICtrlSetState($CheckNone, $GUI_DISABLE)
GUICtrlSetState($TreeList, $GUI_HIDE)
$CLOSE = "禁止关闭" ;==>设定禁止关闭
$Edit = GUICtrlCreateEdit("", 10, 80, 280, 150);==>创建状态说明窗口
$Text = ""
;用"$GUI_CHECKED"会不稳定,用"1"和"257"相对保险,没有失效的情况,用CMD命令运行是为了防止找不到安装文件时程序崩溃
For $Var2 = 1 To $Var1 Step 1
If GUICtrlRead($CheckBox[$Var2]) = "1" Then ;==>选择框已选时的返回值1
$Text = $Text & "正在安装" & IniRead($IniName, $Var2, "名称", "") & "……" & @CRLF
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "", $Text)
If IniRead($IniName, $Var2, "安装提示", "0") = 1 Then ToolTip("正在安装" & IniRead($IniName, $CheckBox, "名称", "") & "……", 0, 0, "自动安装软件", 1, 4)
RunWait(@ComSpec & " /c " & IniRead($IniName, $Var2, "安装包位置(自动安装)", ""), "", @SW_HIDE)
$Text = $Text & " 已安装" & IniRead($IniName, $Var2, "名称", "") & @CRLF
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "", $Text)
ElseIf GUICtrlRead($CheckBox[$Var2]) = "257" Then ;==>选择框已选时的返回值1
$Text = $Text & "正在安装" & IniRead($IniName, $Var2, "名称", "") & "……" & @CRLF
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "", $Text)
If IniRead($IniName, $Var2, "安装提示", "0") = 1 Then ToolTip("正在安装" & IniRead($IniName, $CheckBox, "名称", "") & "……", 0, 0, "自动安装软件", 1, 4)
RunWait(@ComSpec & " /c " & IniRead($IniName, $Var2, "安装包位置(自动安装)", ""), "", @SW_HIDE)
$Text = $Text & " 已安装" & IniRead($IniName, $Var2, "名称", "") & @CRLF
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "", $Text)
Else
$Text = $Text & "不安装" & IniRead($IniName, $Var2, "名称", "") & @CRLF
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "", $Text)
EndIf
Next
GUICtrlSetData($Edit, "")
GUICtrlSetData($Edit, $Text & "安装完成!", $Text)
Sleep(1000)
$CLOSE = "允许关闭"
If MsgBox(262177, " 安装完成!", "“确定”立即关闭" & Chr(13) & "“取消”手动关闭", 2) <> "2" Then ExitLoop
;还原初始界面
GUICtrlSetState($Edit, $GUI_HIDE)
GUICtrlSetState($TreeList, $GUI_SHOW)
GUICtrlSetState($OK, $GUI_ENABLE)
GUICtrlSetState($Manual, $GUI_ENABLE)
GUICtrlSetState($CheckAll, $GUI_ENABLE)
GUICtrlSetState($CheckNone, $GUI_ENABLE)
Case $msg = $Manual
ControlHide("软件安装选项", "", $CountDownText)
AdlibDisable()
;隐藏主界面,调出手工安装选择窗口,关闭之后重新显示主界面
GUISetState(@SW_HIDE)
FileInstall("软件手工安装.exe", "C:\Documents and Settings\All Users\Templates\")
RunWait("C:\Documents and Settings\All Users\Templates\软件手工安装.exe " & @ScriptDir & "\" & $IniName)
FileDelete("C:\Documents and Settings\All Users\Templates\软件手工安装.exe")
GUISetState(@SW_SHOW)
EndSelect
WEnd
Func CountDown()
$CountDown = $CountDown - 1
If $CountDown <= 0 Then ;==>倒计时为0后则当作按下"确定"按钮处理
$msg = $OK
EndIf
GUICtrlSetData($Progress, ($Time - $CountDown) / $Time * 100) ;==>刷新滚动条
GUICtrlSetData($CountDownText, "剩余时间:" & $CountDown & "s") ;==>刷新时间
EndFunc ;==>CountDown
以下这些是使用au3脚本写的。旨在实现自动安装,但有支持手工安装。推荐在部署系统时使用。自动安装参数:/autosetup "软件安装目录(如D:\Program Files)" ,软件安装目录默认为D:\Program Files。如 /autosetup "D:\Program Files" 也可以不加参数手工安装。
软件手工安装
#Region ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\软件安装管理.ico
#AutoIt3Wrapper_outfile=..\..\软件手工安装.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseAnsi=y
#AutoIt3Wrapper_Res_Description=软件安装管理-软件手工安装
#AutoIt3Wrapper_Res_Fileversion=1.2.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JS
#AutoIt3Wrapper_Res_SaveSource=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>
#NoTrayIcon
If $CmdLine[0] <> 0 Then
$IniName = $CmdLine[1]
Else
Exit
EndIf
GUICreate("点击安装", 150, 200, -1, -1)
$TreeList = GUICtrlCreateTreeView(0, 0, 150, 180, $TVS_LINESATROOT)
$Var1 = IniRead($IniName, "总设置", "软件数量", "10")
Dim $Label[$Var1 + 2]
For $Var2 = 1 To $Var1 Step 1
$Label[$Var2] = GUICtrlCreateTreeViewItem(IniRead($IniName, $Var2, "名称", ""), $TreeList)
$LabelMenu = GUICtrlCreateContextMenu($Label[$Var2])
GUICtrlCreateMenuItem("版本:" & IniRead($IniName, $Var2, "版本", ""), $LabelMenu)
GUICtrlCreateMenuItem("出品:" & IniRead($IniName, $Var2, "出品", ""), $LabelMenu)
GUICtrlCreateMenuItem("大小:" & IniRead($IniName, $Var2, "大小", ""), $LabelMenu)
GUICtrlCreateMenuItem("更新:" & IniRead($IniName, $Var2, "更新", ""), $LabelMenu)
Next
GUICtrlCreateLabel(IniRead($IniName, "总设置", "版权信息", "by JS"), 115, 185, 50, 20)
GUICtrlSetFont(-1, 9, 400, 2, "gulim")
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
For $Var2 = 1 To $Var1 Step 1
If $msg = $Label[$Var2] Then
RunWait(@ComSpec & " /c " & IniRead($IniName, $Var2, "安装包位置(手动安装)", ""), "", @SW_HIDE)
EndIf
Next
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
15.4 KB, 下载次数: 186, 下载积分: 无忧币 -2
| 欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) | Powered by Discuz! X3.3 |