lhy6456210 发表于 2010-8-20 18:07:12

fileinstall 涵数解压问题

本帖最后由 lhy6456210 于 2010-8-20 21:01 编辑

我要用fileinstall 命令 包含很多的.exe文件,,这些文件在解压时一定会浪费一定的时间,难否在fileinstall 文件之前加入命令:实现在解压前(我看到很多程序,在运行时都会弹出一个小对话框,提示正在解压文件并且有完成百比的数字再跳),就是想实现这个效果。

是不是没有看懂我表达的意思?我上张图:


刚刚我记了一下时间,把这些文件解压到临时文件夹用了40秒钟,我想实现的效果就是在解压的时候,有解压的进度条或者完成百分比之类的提示;

因为刚刚发了贴被管理员关了,说是标题模糊|违规,因为自己表大能力很差,自己的内容不知道要用什么标题才算不违规,如果这次这个标题再违规,麻烦帮我弄一个标题,谢谢!!!

lixiaolong 发表于 2010-8-20 18:50:15

问题是什么时候解压,
什么时候用,什么时候解压,用不到指定的EXE文件时就不用解压

xyold1 发表于 2010-8-20 20:52:43

你可以在脚本启动时加一界面提示等待

在解压完成后,即脚本正常运行前提示等待结束

FileInstall如果不覆盖已存在的文件,应该用时不长吧

lixiaolong 发表于 2010-8-20 21:37:30

简单进度条

这个值 0, 0 & " %" 看文件多少,自己改就行了ProgressOn("进度条", "正在解压", "0 %")
                                ProgressSet(0, 0 & " %")
                                FileInstall("1.exe",@TempDir & "\", 1)
                                ProgressSet(10, 10 & " %")
                                FileInstall("2.exe",@TempDir & "\", 1)
                                ProgressSet(20, 20 & " %")
                                FileInstall("3.exe",@TempDir & "\", 1)
                                ProgressSet(30, 30 & " %")
                                FileInstall("4.exe",@TempDir & "\", 1)
                                ProgressSet(40, 40 & " %")
                                FileInstall("5.exe",@TempDir & "\", 1)
                                ProgressSet(50, 50 & " %")
                                FileInstall("6.exe",@TempDir & "\", 1)
                                ProgressSet(60, 60 & " %")
                                FileInstall("7.exe",@TempDir & "\", 1)
                                ProgressSet(70, 70 & " %")
                                FileInstall("8.exe",@TempDir & "\", 1)
                                ProgressSet(80, 80 & " %")
                                FileInstall("9.exe",@TempDir & "\", 1)
                                ProgressSet(90, 90 & " %")
                                FileInstall("10.exe",@TempDir & "\", 1)
                                ProgressSet(100, 100 & " %")
                                FileInstall("11.exe",@TempDir & "\", 1)
                                ProgressOff()
                                MsgBox(0, "解压文件", "解压完成!")

afan 发表于 2010-8-20 21:54:16

LZ的 FileInstall 参数错误,源文件不能使用变量,编译通不过的…
这么大的文件,不用包含进去吧,建个文件夹不好吗,还好管理点。只要编译那个安装脚本就行了。

lhy6456210 发表于 2010-8-20 22:10:00

回复 4# lixiaolong


    谢谢!!!

lhy6456210 发表于 2010-8-20 22:11:04

回复 5# afan


    文件夹不好管理啊,编译后,只有一个文件

republican 发表于 2010-8-20 22:21:12

大文件考虑用Resource.Au3的UDF,效果就不必说了。

参考_ResourceSaveToFile函数可以写出非常精确的解压过程。Local $ResStruct, $ResSize, $FileHandle

        $ResStruct = _ResourceGetAsBytes($ResName, $ResType, $ResLang)
        If @error Then Return SetError(1, 0, 0)
        $ResSize = DllStructGetSize($ResStruct)
       
        If $CreatePath Then $CreatePath = 8 ; mode 8 = Create directory structure if it doesn't exist
        $FileHandle = FileOpen($FileName, 2+16+$CreatePath)
        If @error Then Return SetError(2, 0, 0)
        FileWrite($FileHandle, DllStructGetData($ResStruct, 1))
        If @error Then Return SetError(3, 0, 0)
        FileClose($FileHandle)
        If @error Then Return SetError(4, 0, 0)

        Return $ResSize关键的就这三条.

$ResStruct = _ResourceGetAsBytes($ResName, $ResType, $ResLang)    ;这个不用说了,肯定要的
$ResSize = DllStructGetSize($ResStruct)                                                   ;考虑用循环获取全部文件大小
FileWrite($FileHandle, DllStructGetData($ResStruct, 1))                           ;这个各声明一个Local,Global变量,储存 单一文件,全局文件 解压进度。

minterz 发表于 2010-8-22 00:12:30

觉得文件多的,还是打包吧。。

xgysww 发表于 2010-8-22 10:49:50

谢谢了,对进度条又多了解了。

today2004 发表于 2010-8-22 18:39:35

学习了
{:face (125):}

today2004 发表于 2010-8-22 19:28:36

大文件还是 建立个文件夹比较好吧 。

lhy6456210 发表于 2010-8-24 12:38:44

先谢谢了,还是决定采用4楼的,简单,因为是新手,8楼太复杂,不好理解

xjdjpbp 发表于 2010-8-24 12:55:19

(#cs迷之聲=========================================)

假如你的問題得到解決.請發貼人,編輯主題.把分類改為[已解決]

(#ce迷之聲=========================================)
页: [1]
查看完整版本: fileinstall 涵数解压问题