Код:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;
Global $aProgress_Ctrls[10]
Global $hCallBack, $ahTimer
Global $iProgress_InitSet
_Progress_Initialize()
Sleep(1500)
_Progress_Set(5)
Sleep(2500)
_Progress_Set(25)
Sleep(2500)
_Progress_Set(55)
Sleep(2500)
_Progress_Set(85)
Sleep(2500)
_Progress_Set(100, "Main Progress: ", "Working Progress", "Done!", 100)
Sleep(2500)
_Progress_ShutDown()
Func _Progress_Initialize($sMain_Data="Please wait...", $sMainPrgrs_Data="Main Progress: 0%", $sCrntPrgs_Data="Working Progress")
$aProgress_Ctrls[1] = GUICreate("Installation Progress", 300, 150, -1, -1, -1, $WS_EX_TOOLWINDOW)
$aProgress_Ctrls[2] = GUICtrlCreateLabel($sMain_Data, 20, 10, 260, 30)
GUICtrlSetFont(-1, 10, 800)
$aProgress_Ctrls[3] = GUICtrlCreateLabel($sCrntPrgs_Data, 20, 50, 260, 20)
$aProgress_Ctrls[4] = GUICtrlCreateProgress(20, 65, 260, 17)
$aProgress_Ctrls[5] = GUICtrlCreateLabel($sMainPrgrs_Data, 20, 100, 260, 20)
$aProgress_Ctrls[6] = GUICtrlCreateProgress(20, 115, 260, 20)
GUISetState(@SW_SHOW, $aProgress_Ctrls[1])
EndFunc
Func _Progress_Set($iMPrgrs, $sMPrgrs_Data="Main Progress: ", $sCrntPrgs_Data="Working Progress", $sMain_Data="", $iCrntPrgrs=-1)
GUICtrlSetData($aProgress_Ctrls[6], $iMPrgrs)
If $hCallBack = 0 Then
$hCallBack = DllCallbackRegister("_Callback_ProgressSet_Proc", "int", "hwnd;int;int;dword")
$ahTimer = DllCall("User32.dll", "int", "SetTimer", _
"hwnd", 0, "int", TimerInit(), "int", 50, "ptr", DllCallbackGetPtr($hCallBack))
EndIf
If $iCrntPrgrs > 0 Then
If $hCallBack > 0 Then DllCallBackFree($hCallBack)
DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $ahTimer[0])
$hCallBack = 0
$ahTimer = 0
GUICtrlSetData($aProgress_Ctrls[4], $iCrntPrgrs)
EndIf
GUICtrlSetData($aProgress_Ctrls[3], $sCrntPrgs_Data)
GUICtrlSetData($aProgress_Ctrls[5], $sMPrgrs_Data & $iMPrgrs & "%")
If $sMain_Data <> "" Then GUICtrlSetData($aProgress_Ctrls[2], $sMain_Data)
EndFunc
Func _Progress_ShutDown()
If $hCallBack > 0 Then DllCallBackFree($hCallBack)
If IsArray($ahTimer) Then DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $ahTimer[0])
$hCallBack = 0
$ahTimer = 0
GUIDelete($aProgress_Ctrls[1])
EndFunc
Func _Callback_ProgressSet_Proc($hWnd, $iIDEvent, $iElapse, $pTimerFunc)
$iProgress_InitSet += 5
If $iProgress_InitSet > 100 Then $iProgress_InitSet = 0
GUICtrlSetData($aProgress_Ctrls[4], $iProgress_InitSet)
EndFunc
Вместо пауз, естественно нужно использовать запуск приложении и прочую обработку.