本帖最后由 沉默的斗鱼 于 2020-4-16 21:08 编辑
软件界面已做好,但无法实现解压到指定路径。
从论坛找的资料,做了一个软件安装界面,打算用imagex实现解压释放,当然7Z更方便,但我选择用imagex,已知问题是imagex释放到指定路径如果不存在路径文件夹将解压无效。
这个可以不考虑,直接在77文件夹打包文档等到77.Wim,避免无实际路径文件夹解压无效问题。
假设解压到 C:\Program Files\77 ,
imagex的命令为 imagex.exe /apply 22.wim 1 C:\Program Files\77 ,
但我调用变量无法实现解压到指定文件夹,附代码,求助大神支招!
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=LOGO.ico
#AutoIt3Wrapper_Outfile=AAA.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=XXX安装程序
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=@copyright 2020
#AutoIt3Wrapper_Res_Field=CompanyName|制作
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <ComboConstants.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
FileInstall("logo.jpg", @TempDir & "\logo.jpg", 1)
FileInstall("imagex.exe", @TempDir & "\imagex.exe", 1)
;装入imagex.exe,用于解压安装包。
FileInstall("22.wim", @TempDir & "\22.wim", 1)
;装入22.wim,22.wim是压缩的安装程序。
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("XXXX程序安装", 510, 315, -1, -1)
$Pic1 = GUICtrlCreatePic(@TempDir & "\logo.jpg", 0, 0, 510, 100)
$Label0 = GUICtrlCreateLabel("XXXX程序安装", 56, 14, 404, 45)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor($Label0, $GUI_BKCOLOR_TRANSPARENT)
$Input1 = GUICtrlCreateInput("C:\Program Files\77", 10, 258, 380, 20)
$Group1 = GUICtrlCreateGroup("安装许可协议:", 5, 115, 500, 125)
$Label1 = GUICtrlCreateLabel(" 欢迎使用XXXX程序安装!你能接受吗?" & @CRLF & @CRLF & "欢迎使用XXXX程序安装!你能接受吗?" & @CRLF & @CRLF & "欢迎使用XXXX程序安装!你能接受吗?", 200, 150, 280, 60)
;这里写入协议内容
$Button1 = GUICtrlCreateButton("安装目录(&C)", 405, 255, 100, 25)
GUICtrlSetState($Button1, $GUI_DISABLE)
$Button2 = GUICtrlCreateButton("执行安装(&I)", 405, 285, 100, 25)
GUICtrlSetState($Button2, $GUI_DISABLE)
$Ag = GUICtrlCreateCheckbox("我同意许可协议", 10, 230, 100, 20)
GUICtrlSetState(-1, $GUI_UNCHECKED)
$QQ = GUICtrlCreateLabel("程序:XXXXXXXXXXXXX", 180, 292, 210, 20)
GUICtrlSetColor(-1, 0x008000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
FileDelete(@TempDir & "\imagex.exe")
FileDelete(@TempDir & "\22.wim")
Exit
Case $nMsg = $Ag
If GUICtrlRead($Ag) = $GUI_CHECKED Then
GUICtrlSetState($Button1, $GUI_ENABLE)
EndIf
If GUICtrlRead($Ag) = $GUI_UNCHECKED Then
GUICtrlSetState($Button1, $GUI_DISABLE)
;这里调整控件状态。
EndIf
Case $nMsg = $Button1
$Search = FileSelectFolder("请选择一个文件夹:", "")
;这里选择安装目录。
$Preservation = GUICtrlSetData($Input1, $Search)
If StringLen(GUICtrlRead($Input1)) >= 1 Then
GUICtrlSetState($Button2, $GUI_ENABLE)
EndIf
Case $nMsg = $Button2
RunWait(@ScriptDir & "imagex.exe" & "/apply" & "22.wim" & "1" & $Search, @WindowsDir, @SW_HIDE)
;用到的WIN加压缩命令是 imagex.exe /apply 22.wim 1 C:\Program Files\77 ($Search 代表自定义路径)
;解压预安装文件到安装目录。
FileDelete(@TempDir & "\imagex.exe")
FileDelete(@TempDir & "\22.wim")
If FileExists(@TempDir & "\22.wim") = 0 Then
;这里判断程序包是否存在来判断安装完成。
MsgBox(0, "完成", "安装完成 !")
Exit
EndIf
EndSelect
WEnd
logo.jpg
|