找回密码
 加入
搜索
楼主: zzfbz

脚本运行正常,可是编译后出现问题

[复制链接]
发表于 2009-4-22 23:45:15 | 显示全部楼层
关于FILEINSTALL, 编译时,会把这文件打包到你编译后的程序;运行时,会在适当时机把这文件先解压出来以备后面的脚本调用他。。

如:
FileInstall("tools\TWEAKUI.EXE",@TempDir&"\",1)
RunWait(@TempDir&"\TWEAKUI.EXE")
FileDelete(@TempDir&"\TWEAKUI.EXE")

编译前保证脚本目录下有tools文件夹,并包含TWEAKUI.EXE文件在里面。如果没有,会编译错误
编译后运行,会把TWEAKUI.EXE先解压到@TempDir,然后后面代码会运行@TempDir目录下的TWEAKUI.EXE
 楼主| 发表于 2009-4-23 10:11:07 | 显示全部楼层
你参照sensel 的回复,应该很容易发现问题所在啊。。

你脚本名、编译名、欲运行程序名,都冲突,这本身就是坏习惯。。试着建立新目录,把脚本+欲运行程序放到里面,修改三者名字都不一样,测试再测试。。 要学会测 ...
llztt 发表于 2009-4-22 23:25

1、脚本改名后和原程序放在同一文件夹,运行脚本文件可以自动安装;
2、编译后的文件也和原文件及脚本名不一样,也是放在另外文件夹中,可还是只有259K,这样肯定是不对的,因为原文件有6M;
3、请教编译方法?
4、Aut软件本身版本会不会影响编译?
发表于 2009-4-23 10:29:46 | 显示全部楼层
FileInstall ( "FlashPlayer.exe", @ScriptDir&"\FlashPlayer.exe", 1 );把FLASHPLAYER。EXE和脚本放在同一目录下,然后编译。多看看帮助。
run(@ScriptDir&'\FlashPlayer.exe',@ScriptDir)
$hd="安装 - Baby Flash播放器"
WinWaitActive($hd,"欢迎使用 Baby Flash播放器")
send("!n")
WinWaitActive($hd,"选择目标位置")
ControlSetText($hd,"","TEdit1","D:\Program Files\FlashPlayer")
send("!n")
WinWaitActive($hd,"选择开始菜单文件夹")
send("!n")
WinWaitActive($hd,"选择附加任务")
send("!d")
send("!n")
WinWaitActive($hd,"安装程序现在准备开始")
send("!i")
WinWaitActive($hd,"完成 Baby Flash播放器 安装向导")
send("{space}")
send("!f")
 楼主| 发表于 2009-4-23 10:56:44 | 显示全部楼层
18# ddx13
按楼上修改后的脚本,编译后的exe文件还是只有259K,这样是不是要把这个编译后的exe文件和原exe文件放在一起,才能在没有Aut的电脑上自动安装?
 楼主| 发表于 2009-4-23 10:59:08 | 显示全部楼层
关于FILEINSTALL, 编译时,会把这文件打包到你编译后的程序;运行时,会在适当时机把这文件先解压出来以备后面的脚本调用他。。

如:
FileInstall("tools\TWEAKUI.EXE",@TempDir&"\",1)
RunWait(@TempDir&"\TW ...
llztt 发表于 2009-4-22 23:45

按你的方法编译后的文件确实可以运行,但运行的是编译前的原安装程序,不能自动化安装。
 楼主| 发表于 2009-4-23 11:06:49 | 显示全部楼层
我前几天曾经用相同的方法编译成功过,可是今天换了3台电脑都不行,这3台电脑安装的autoit可能都是一样的,会不会是AT软件的问题?
zzfbz 发表于 2009-4-22 21:52

我前几天1.77汉化版,用现在这个脚本,先打开aut2exe,然后点浏览找到脚本,目标文件保存到另一文件夹,指定ico,编译成功过。编译后的exe文件和原安装程序大小差不多,也可以正常自动安装,也就是说成功编译了。后来下了1.78汉化版就不能正常编译了。现在重新安装1.77版也不行了。我高度怀疑是AU3的版本问题。
发表于 2009-4-23 11:14:43 | 显示全部楼层
把你的"FlashPlayer.exe",  传上来,或是下载网址。
 楼主| 发表于 2009-4-23 11:38:33 | 显示全部楼层
http://www.newhua.com/soft/28927.htm
华军,baby flash播放器
 楼主| 发表于 2009-4-23 11:39:56 | 显示全部楼层
谢谢各位了!
试了几个版本的Aut都不行。
我前几天做的可以啊,这个脚本单独运行也可以,就是编译后不正常
 楼主| 发表于 2009-4-23 11:41:23 | 显示全部楼层
我已经写了十几个脚本了,试编译了几个都不行
 楼主| 发表于 2009-4-23 11:42:42 | 显示全部楼层
十几个脚本编译前运行都经过测试成功,就是编译成exe文件后都不行
发表于 2009-4-23 11:43:25 | 显示全部楼层
多找找自己问题,我刚才测试过了,一切正常。
把FLASHPLAYER。EXE和脚本放在同一目录下,然后编译。多看看帮助。


FileInstall ( "FlashPlayer.exe", @ScriptDir&"\FlashPlayer.exe", 1 )
run(@ScriptDir&'\FlashPlayer.exe',@ScriptDir)
$hd="安装 - Baby Flash播放器"
WinWaitActive($hd,"欢迎使用 Baby Flash播放器")
send("!n")
WinWaitActive($hd,"选择目标位置")
ControlSetText($hd,"","TEdit1","D:\Program Files\FlashPlayer")
send("!n")
WinWaitActive($hd,"选择开始菜单文件夹")
send("!n")
WinWaitActive($hd,"选择附加任务")
send("!d")
send("!n")
WinWaitActive($hd,"安装程序现在准备开始")
send("!i")
WinWaitActive($hd,"完成 Baby Flash播放器 安装向导")
send("{space}")
send("!f")
 楼主| 发表于 2009-4-23 13:52:00 | 显示全部楼层
真是太谢谢你了!按你的脚本编译成功。但有个问题,运行编译后的exe文件自动安装后,目录下释放出来一个原FlashPlayer.exe,怎么才能在安装完成后自动删除它啊?在脚本中加个什么语句?请明示!
 楼主| 发表于 2009-4-23 14:07:03 | 显示全部楼层
我在脚本的最后面加了一句FileDelete(@ScriptDir&"\FlashPlayer.exe")
完整的脚本如下,你看行吗,会不会影响自动安装,加不加一个条件语句,如果要加条件语句,怎么加?(这个软件的安装没受最后一句的影响,自动安装完成后也自动删除了释放程序,不知道其它软件会不会有影响)
FileInstall ( "FlashPlayer.exe", @ScriptDir&"\FlashPlayer.exe", 1 )
run(@ScriptDir&'\FlashPlayer.exe',@ScriptDir)
$hd = "安装 - Baby Flash播放器"
WinWaitActive($hd, "欢迎使用 Baby Flash播放器")
send("!n")
WinWaitActive($hd, "选择目标位置")
ControlSetText($hd, "", "TEdit1", "D:\Program Files\FlashPlayer")
send("!n")
WinWaitActive($hd, "选择开始菜单文件夹")
send("!n")
WinWaitActive($hd, "选择附加任务")
send("!d")
send("!n")
WinWaitActive($hd, "安装程序现在准备开始")
send("!i")
WinWaitActive($hd, "完成 Baby Flash播放器 安装向导")
send("{space}")
send("!f")
FileDelete(@ScriptDir&"\FlashPlayer.exe")
发表于 2009-4-23 15:11:05 | 显示全部楼层
FileInstall ( "FlashPlayer.exe", @ScriptDir&"\FlashPlayer.exe", 1 )
run(@ScriptDir&'\FlashPlayer.exe',@ScriptDir)
$hd = "安装 - Baby Flash播放器"
WinWaitActive($hd, "欢迎使用 Baby Flash播放器")
send("!n")
WinWaitActive($hd, "选择目标位置")
ControlSetText($hd, "", "TEdit1", "D:\Program Files\FlashPlayer")
send("!n")
WinWaitActive($hd, "选择开始菜单文件夹")
send("!n")
WinWaitActive($hd, "选择附加任务")
send("!d")
send("!n")
WinWaitActive($hd, "安装程序现在准备开始")
send("!i")
WinWaitActive($hd, "完成 Baby Flash播放器 安装向导")
send("{space}")
send("!f")
For $i = 1 to 999
        sleep(500)
        if FileDelete ( @ScriptDir&'\FlashPlayer.exe' )=1 then ExitLoop
Next






其中
For $i = 1 to 999
        sleep(500)
        if FileDelete ( @ScriptDir&'\FlashPlayer.exe' )=1 then ExitLoop
Next
这里操作是删除FLASHPLAYER。EXE文件,因为有时候运行的文件退出比较慢,无法真得删除掉,所以在这里做了一个检查,如果文件没有删除成功就等待500毫秒后再次删除。重复999次检查操作。如果删除成功则退出当前循环。不会受影响。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-28 14:38 , Processed in 0.069078 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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