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

[系统综合] 20130208更新:[带配置文件源码]如何调用光盘/U盘/硬盘上的配置和软件包安装?

[复制链接]
发表于 2013-2-7 21:53:29 | 显示全部楼层 |阅读模式
本帖最后由 邪恶海盗 于 2013-2-8 17:46 编辑

如题,目的是将该主程序置于封装好的系统部署接口上,将软件置于其它介质上调用,这样对于软件包的更新和修改更方便一些...

尝试根据帮助折腾了一下,首先就发现一个问题,如何找到软件配置文件的路径?
用笨办法DriveGetDrive("all")返回磁盘数量,再用FileFindFirstFile ($var[$i] & "\new\1.ini")断定配置文件是否存在,这里又出现一个问题,如果发现两处配置文件,执行哪个,或者说指定执行先搜索到的该怎么写?

受Qinstall启发到的想法....

20130208更新:
#Region AutoIt3Wrapper 预编译参数(常用参数)
#AutoIt3Wrapper_Icon=G:\脚本相关\图标\xehd.ico  ;图标,支持EXE,DLL,ICO
#AutoIt3Wrapper_OutFile=SWAI.exe   ;输出文件名
#AutoIt3Wrapper_OutFile_Type=exe   ;文件类型
#AutoIt3Wrapper_Compression=9  ;压缩等级
#AutoIt3Wrapper_UseUPX=y  ;使用压缩
#AutoIt3Wrapper_Res_Comment=Software Auto Install  ;注释
#AutoIt3Wrapper_Res_Description=软件自动安装器;详细信息
#AutoIt3Wrapper_Res_Fileversion=0.1.0.2
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=p    ;自动更新版本
#AutoIt3Wrapper_Res_LegalCopyright=邪恶海盗;版权
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("SWAI V0.1", 400, 100, -1, -1, BitOR($WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS))
$Lable1 = GUICtrlCreateLabel("软件自动安装器 V0.1开发版", 5, 5, 390, 15, $SS_CENTER)
GUICtrlSetColor(-1, 0x363636)
$Lable2 = GUICtrlCreateLabel("正在安装", 10, 35, 50, 15)
$Lable3 = GUICtrlCreateLabel("软件名称", 65, 35, 290, 15, $SS_CENTER)
$Lable4 = GUICtrlCreateLabel("[0/0]", 352, 35, 40, 15, $SS_CENTER)
$Lable5 = GUICtrlCreateLabel("安装进度", 10, 62, 50, 15)
$Lable5 = GUICtrlCreateLabel('按[ESC]退出', 15, 85, 150, 15)
GUICtrlSetColor(-1, 0x363636)
$Progress1 = GUICtrlCreateProgress(65, 60, 325, 15, $PBS_SMOOTH);进度条
$Lable6 = GUICtrlCreateLabel("By:邪恶海盗   www.hidao.org", 220, 85, 200, 15)
GUICtrlSetColor(-1, 0x363636)
GUISetState(@SW_SHOW)
Local $Drive = DriveGetDrive("all")
For $i = 1 To $Drive[0]
        If FileExists($Drive[$i] & "\SWAI\SWAI.ini") Then
                ExitLoop
        EndIf
Next
Local $var = IniReadSectionNames($Drive[$i] & "\SWAI\SWAI.ini")
If @error Then
        MsgBox(4096, "", "发生错误, 可能没有 INI 文件.")
Else
        For $i1 = 1 To $var[0]
                $Title = IniRead($Drive[$i] & "\SWAI\SWAI.ini", $var[$i1], "Title", "配置文件出错")
                $Name = IniRead($Drive[$i] & "\SWAI\SWAI.ini", $var[$i1], "Name", "配置文件出错")
                GUICtrlSetData($Lable3, $Title)
                GUICtrlSetData($Lable4, "[" & $var[$i1] & "/" & $var[0] & "]")
                GUICtrlSetData($Progress1, $var[$i1] / $var[0] * 100)
                If IniRead($Drive[$i] & "\SWAI\SWAI.ini", $var[$i1], "Hide", "配置文件出错") = "1" Then
                        RunWait($Drive[$i] & "\SWAI" & $Name, @SW_HIDE)
                Else
                        RunWait($Drive[$i] & "\SWAI" & $Name)
                EndIf
        Next
EndIf
请高人指导一下,看是否有执行效率和其它方面的问题,目前发现的问题是当配置文件不存在的时报错并卡死...
待解决的问题:
1.软件安装目录如何自定义?
2.如果程序是.7z等压缩包,可否自动执行自解压?
3.如何实现当软件安装后运行软件目录下的程序?
成品及配置文件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-2-7 22:46:07 | 显示全部楼层
配置文件里 放个时间或版本

比较一下时间或版本 那个更新 用哪个
 楼主| 发表于 2013-2-7 22:58:09 | 显示全部楼层
回复 2# veket_linux
Local $Drive = DriveGetDrive("all")
For $i = 1 To $Drive[0]
        If FileExists($Drive[$i] & "\new\1.ini") Then
                ExitLoop
        EndIf
Next
MsgBox(0, "", IniRead($Drive[$i] & "\new\1.ini", "CC", "DD", "获取文件名失败"))
用FileExists,结果只返回第一个,感觉基本符合要求了...
下一步测试读配置文件运行程序...
 楼主| 发表于 2013-2-8 17:48:51 | 显示全部楼层
在:        If FileExists($Drive[$i] & "\SWAI\SWAI.ini") Then
                ExitLoop
段下加上:        Else
                Exit
解决了无配置文件报错的问题...

其它问题待高人解决...
发表于 2013-2-9 17:39:05 | 显示全部楼层
来学习看看
 楼主| 发表于 2013-2-14 20:43:01 | 显示全部楼层
期待高淫指导...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 01:41 , Processed in 0.080039 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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