ahphsautoit 发表于 2009-2-18 09:28:29

关于fileinstall 如何编译一个目录进EXE中?

本人新手,刚学会编译一个单执行文件进EXE中,运行后再删除临时目录中的文件。
我的问题是:某个安装程序如OFFICE,它的SETUP放在一个目录里,而这个目录里还有许多的支持文件,这种情况下怎么把相关的文件全部编译进EXE中?我在网上搜索过相关资料,只看到一个类似于把几个不相关的可执行文件同时放在一个编译后的EXE中的做法。请高手解答一下,谢谢了!

[ 本帖最后由 ahphsautoit 于 2009-3-6 11:21 编辑 ]

ahphsautoit 发表于 2009-2-18 09:33:04

附上我的源码,请不要见笑:
dircopy("d:\0","c:\ahphs",1)
fileinstall("d:\0\WinRAR.exe","c:\ahphs\")
run("WinRAR.exe")
winwaitactive("WinRAR v3.51 简体中文版","目标文件夹")
sleep(500)
send("{enter}")
winwaitactive("WinRAR 简体中文版安装","在桌面创建 WinRAR 快捷方式")
sleep(500)
send("{enter}")
winwaitactive("WinRAR 简体中文版安装","成功地安装到文件夹")
sleep(500)
send("{enter}")
sleep(1000)
send("!{f4}")
sleep(1000)
ProcessWaitClose("WinRAR.exe")
FileDelete("c:\ahphs\" & "WinRAR.exe")
dirremove("c:\ahphs",1)
我暂时采用的是把相关文件先复制到临时文件夹中,编译时只把可执行文件SUTEP编译进EXE,执行安装后再删除临时文件夹的做法。

sxd 发表于 2009-2-18 10:12:42

udf区好像有个 dirinstall 不过我没试过 你可以去试试

不行的话 把文件打包成自解压 释放后 run一下好了

ahphsautoit 发表于 2009-2-20 10:49:24

已解决问题,多谢楼上的朋友。我的源码附下,如果有更正统的解决方式,欢迎指正。
sleep(500);暂停500毫秒
dim $a;声明变量$a,存储自解压窗口状态值
fileinstall("0.exe","c:\ahphs\");将自解压文件装入EXE中,并设定临时解压文件夹
run("0.exe");运行自解压
winwaitactive("WinRAR 自解压文件","目标文件夹")
send("{enter}")
Do;检测自解压窗口是否完毕
        $a=WinExists("WinRAR 自解压文件","安装进度")
sleep(1500)
until $a=1
run("WinRAR.exe");运行安装主程序
winwaitactive("WinRAR v3.51 简体中文版","目标文件夹")
send("{enter}")
winwaitactive("WinRAR 简体中文版安装","在桌面创建 WinRAR 快捷方式")
send("{enter}")
winwaitactive("WinRAR 简体中文版安装","成功地安装到文件夹")
send("{enter}")
winwaitactive("WinRAR","「开始」菜单\程序\WinRAR")
send("!{f4}")
ProcessWaitClose("WinRAR.exe");等待主程序完毕
FileDelete("c:\ahphs\" & "WinRAR.exe");删除主程序
dirremove("c:\ahphs",1);删除临时文件夹

sxd 发表于 2009-2-20 20:07:46

我认为

方法只要能应对各种环境而不出现问题 就是好方法

无所谓正统不正统

ahphsautoit 发表于 2009-2-21 00:23:31

多谢朋友的意见 !
再请教您一个问题:
今晚我又做了两个自动安装的脚本,一个是绿色版单文件体的KMplayer播放器,我采用的是将装入安装程序的KMplayer.exe释放到c:\program files中,并在桌面创建快捷方式,再启动该播放器,这个完全没有问题。第二个是做的千千静听,包含一个千千静听的安装程序和一个千千音效的安装程序,我采用的是将两个安装程序分别装人EXE中,再顺序执行的方式。我的问题是:双击“千千静听”源码的时候,系统默认的是执行,这时候工作完全正常,但是如果执行编译过后的“千千静听”自动安装脚本的时候,却什么动作也没有(连第一个将文件释放到临时文件夹的动作都没有),右键点击托盘图标可看见“脚本已暂停”上打了个勾。刚刚接触AU3的时候,下载过很多别人做好的现成的自动脚本来试用过,也遇见过不少这样的情况。请问这是怎么回事呢?

sxd 发表于 2009-2-21 10:10:44

在每一个关键动作附近 加入 msgbox 来看 执行到哪里了

ahphsautoit 发表于 2009-2-24 08:42:14

明白你的意思!实践中。。。
页: [1]
查看完整版本: 关于fileinstall 如何编译一个目录进EXE中?