Sign in to follow this  
Followers 0
Decipher

AutoIt Project General Conversation

9 posts in this topic

#1 ·  Posted (edited)

Heres some code to look at.

#cs ----------------------------------------------------------------------------
    
    AutoIt Version: 3.3.9.4 (beta)
    Author:      Decipher
    
    Script Function:
    WinGet - Windows Program Downloader/Installer
    
#ce ----------------------------------------------------------------------------

HttpSetUserAgent("Wget/1.13.4") ;- "portableapps.com/updater/update.ini"

#include <String.au3>
#include <Array.au3>
#include <Date.au3>
#include <File.au3>
#include <IncludesWinHTTP.au3>
#include <WinAPIEx.au3>

Global $sTemp_Dir = _TempFile()
DirCreate($sTemp_Dir)

HotKeySet("{ESC}", "_Exit")

;/DESTINATION="" /AUTOCLOSE=true /HIDEINSTALLER=true /SILENT=true

_Setup_uTorrent()



;"http://downloads.sourceforge.net/portableapps"

Func _Setup_uTorrent()
    Local $uTorrent_Portable_Installer = _Download_uTorrent_Portable('http://sourceforge.net/projects/portableapps/files/uTorrent Portable')
    If $uTorrent_Portable_Installer Then
        If Not @error Then _Configure_uTorrent_Portable($uTorrent_Portable_Installer)
        If Not @error Then
            FileChangeDir(@ScriptDir)
            _Configure_uTorrent_WebUI()
            FileChangeDir($sTemp_Dir & "uTorrentPortable")
            Run("uTorrentPortable.exe /HIDE")
            ShellExecute("http://admin:test@127.0.0.1:8080/gui") ; Testing
        Else
            ConsoleWrite(@CRLF & "!> Error configuring uTorrent Portable! Code: " & @error & @CRLF)
            _Exit()
        EndIf
    EndIf
    While 1
        Sleep(1000)
    WEnd
EndFunc   ;==>_Setup_uTorrent
Func _Download_uTorrent_Portable($uTorrent_Portable_SourceForge_URL, $iIteration = False)
    Local $sPage_Data = _WinHttpGet($uTorrent_Portable_SourceForge_URL)
    If $sPage_Data = '' Or @error Then
        ConsoleWrite(@CRLF & '!> Connection Error or Invalid URL!' & @CRLF)
        Return SetError(1, 0, 0)
    EndIf
    Local $aDate, $iLatest_Index = 0, $iLast_Calc = Default, $aFileList = _StringBetween($sPage_Data, '<tr title="', '</tr>') ; 2012-08-01
    For $iFile = 0 To UBound($aFileList, 1) - 1
        $aDate = _StringBetween($aFileList[$iFile], '<abbr title="', '"')
        If Not IsArray($aDate) Then ContinueLoop
        If $aDate[0] = '' Then ContinueLoop
        $aDate = StringSplit($aDate[0], ' ', 3)
        $aDate[0] = StringReplace($aDate[0], '-', '/')
        Local $iDateCalc = _DateDiff('s', $aDate[0] & ' ' & $aDate[1], _NowCalc())
        If $iLast_Calc = Default Then $iLast_Calc = $iDateCalc
        If $iDateCalc <= $iLast_Calc Then $iLatest_Index = $iFile
        $iLast_Calc = $iDateCalc
    Next
    Local $aFile_Name = _StringBetween($aFileList[$iLatest_Index], 'class="' & 'name' & '">', '</a>')
    If $iIteration Then
        FileChangeDir($sTemp_Dir)
        Local $sFile_Name = StringStripWS($aFile_Name[0], 7)
        If _WinHttpGet($uTorrent_Portable_SourceForge_URL & '/' & $sFile_Name, True) Then
            Return $sFile_Name
        Else
            Return False
        EndIf
    Else
        Local $sFile_Name = _Download_uTorrent_Portable($uTorrent_Portable_SourceForge_URL & '/' & StringStripWS($aFile_Name[0], 7), True)
        If $sFile_Name Then
            Return $sFile_Name
        Else
            Return False
        EndIf
    EndIf
EndFunc   ;==>_Download_uTorrent_Portable
Func _Configure_uTorrent_Portable($sFile_Name)
    Run($sFile_Name)
    Local $sUTP_Title_Def = "[CLASS:#32770; TITLE:uTorrent Portable]"
    If Not WinWait($sUTP_Title_Def, "", 30) Then Return SetError(1, 0, 0)
    $hUTP = WinGetHandle($sUTP_Title_Def)
    If @error Then Return SetError(2, 0, 0)
    WinActivate($hUTP, "")
    If Not WinWaitActive($hUTP, "", 5) Then Return SetError(3, 0, 0)
    $sUTP_Text = WinGetText($hUTP, "")
    If StringInStr($sUTP_Text, "Please select a language for the installer.") Then
        If Not WinActive($hUTP) Then WinActivate($hUTP, "")
        If Not WinWaitActive($hUTP, "", 5) Then Return SetError(4, 0, 0)
        ControlCommand($hUTP, "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", "English")
        If @error Then Return SetError(5, 0, 0)
        If Not ControlClick($hUTP, "", "[CLASS:Button; INSTANCE:1]") Then Return SetError(6, 0, 0)
    EndIf
    $sUTP_Title_Def = "[CLASS:#32770; INSTANCE:1; TITLE:uTorrent Portable | PortableApps.com Installer]"
    If Not WinWait($sUTP_Title_Def, "", 10) Then Return SetError(7, 0, 0)
    $hUTP = WinGetHandle($sUTP_Title_Def)
    For $i = 1 To 100 ; 10 seconds
        If WinGetTitle($hUTP, "") <> "uTorrent Portable | PortableApps.com Installer" Then
            Sleep(500)
            If $i = 100 Then Return SetError(8, 0, 0)
            ContinueLoop
        EndIf
        ExitLoop
    Next
    WinActivate($hUTP, "")
    If Not WinWaitActive($hUTP, "", 5) Then Return SetError(9, 0, 0)
    If Not ControlClick($hUTP, "", "[CLASS:Button; INSTANCE:2]") Then Return SetError(10, 0, 0)
    For $i = 1 To 100
        $sText = ControlGetText($hUTP, "", "Button2")
        If $sText <> "I &Agree" Then
            Sleep(100)
            If $i = 100 Then Return SetError(11, 0, 0)
            ContinueLoop
        EndIf
        ExitLoop
    Next
    If Not WinActive($hUTP) Then WinActivate($hUTP, "")
    If Not WinWaitActive($hUTP, "", 5) Then Return SetError(12, 0, 0)
    If Not ControlClick($hUTP, "", "[CLASS:Button; INSTANCE:2]") Then Return SetError(13, 0, 0)
    For $i = 1 To 100
        $sText = ControlGetText($hUTP, "", "Button2")
        If $sText <> "&Install" Then
            Sleep(100)
            If $i = 100 Then Return SetError(14, 0, 0)
            ContinueLoop
        EndIf
        ExitLoop
    Next
    If Not WinActive($hUTP) Then WinActivate($hUTP, "")
    If Not WinWaitActive($hUTP, "", 5) Then Return SetError(15, 0, 0)
    If Not ControlClick($hUTP, "", "[CLASS:Button; INSTANCE:2]") Then Return SetError(16, 0, 0)
    For $i = 1 To 1200 ; 2 min
        $sText = ControlGetText($hUTP, "", "Button2")
        If $sText <> "&Finish" Then
            Sleep(100)
            If $i = 1200 Then Return SetError(17, 0, 0)
            ContinueLoop
        EndIf
        ExitLoop
    Next
    If Not WinActive($hUTP) Then WinActivate($hUTP, "")
    If Not WinWaitActive($hUTP, "", 5) Then Return SetError(18, 0, 0)
    If Not ControlClick($hUTP, "", "[CLASS:Button; INSTANCE:2]") Then Return SetError(19, 0, 0)
EndFunc   ;==>_Configure_uTorrent_Portable
Func _Configure_uTorrent_WebUI()
    FileInstall("Extsettings.dat", $sTemp_Dir & "uTorrentPortableAppuTorrentsettings.dat")
    FileInstall("ExtWebUI.zip", $sTemp_Dir & "uTorrentPortableAppuTorrentWebUI.zip")
EndFunc   ;==>_Configure_uTorrent_WebUI
Func _WinHttpGet($sDownload_URI, $iFileMode = False, $sReferer = Default, $sFile_Name = Default)
    Local $aSplit_URL = _WinHttpCrackUrl($sDownload_URI)
    Local $hOptTime = TimerInit()
    Local $hWinHttpOpen = _WinHttpOpen()
    Local $hWinHttpConnect = _WinHttpConnect($hWinHttpOpen, $aSplit_URL[2])
    Local $hWinHttpRequest = _WinHttpOpenRequest($hWinHttpConnect, "GET", $aSplit_URL[6], Default, $sReferer)
    _WinHttpSendRequest($hWinHttpRequest)
    _WinHttpReceiveResponse($hWinHttpRequest)
    Local $iSizeBytes = _WinHttpQueryHeaders($hWinHttpRequest, $WINHTTP_QUERY_CONTENT_LENGTH)
    If _WinHttpQueryDataAvailable($hWinHttpRequest) Then
        Local $vNTdll = DllOpen("ntdll.dll")
        Local $nSpeedLimit = 1024 * 5000 ; 1024 * Kilobytes per second
        Local $iBytePerStep = 8192
        Local $iBufferSize = 1024 * 1024
        Local $iSleepTime = Round($iBytePerStep / $nSpeedLimit * 1000)
        Local $tPrecSleep = DllStructCreate("int64 time;")
        Local $pPrecSleep = DllStructGetPtr($tPrecSleep)
        If $iFileMode Then
            If $sFile_Name = Default Then $sFile_Name = @WorkingDir & "" & StringTrimLeft($aSplit_URL[6], StringInStr($aSplit_URL[6], "/", 0, -1))
            Local $hFile = _WinAPI_CreateFileEx($sFile_Name, $CREATE_NEW, $GENERIC_WRITE, $FILE_SHARE_READ, $FILE_ATTRIBUTE_NORMAL)
        EndIf
        Local $tBuffer = DllStructCreate("byte[" & $iBufferSize & "]")
        Local $pBuffer = DllStructGetPtr($tBuffer)
        Local $tOverlapped = _GetStruct_Overlapped(0)
        Local $pOverlapped = DllStructGetPtr($tOverlapped)
        Local $iByteWritten = 0
        Local $iOffsetFile = 0
        If $iFileMode Then
            Local $vData = Binary("")
        Else
            Local $vData = ""
        EndIf
        Local $nT = TimerInit()
        Local $iError, $iBufferContent, $iByteWritten
        Do
            $iSleepTemp = ($iSleepTime - TimerDiff($nT))
            If $iSleepTemp > 0 Then
                DllStructSetData($tPrecSleep, "time", -10000 * $iSleepTemp)
                DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
            EndIf
            $nT = TimerInit() ; Reset Timer
            If $iFileMode Then
                $vData &= _WinHttpReadData($hWinHttpRequest, 2, $iBytePerStep) ; Get Chunk
            Else
                $vData &= _WinHttpReadData($hWinHttpRequest)
            EndIf
            $iError = @error
            If $iFileMode Then
                $iBufferContent = BinaryLen($vData)
                If $iBufferContent >= $iBufferSize - $iBytePerStep Or $iError = -1 Then
                    _WinAPI_GetOverlappedResult($hFile, $pOverlapped, $iByteWritten, True)
                    DllStructSetData($tBuffer, 1, $vData)
                    $vData = Binary("")
                    $iOffsetFile += $iByteWritten
                    $tOverlapped = _GetStruct_Overlapped($iOffsetFile)
                    $pOverlapped = DllStructGetPtr($tOverlapped)
                    _WinAPI_WriteFile($hFile, $pBuffer, $iBufferContent, $iByteWritten, $pOverlapped)
                EndIf
            EndIf
        Until $iError = -1
        If $iFileMode Then _WinAPI_CloseHandle($hFile)
        DllClose($vNTdll)
        _WinHttpCloseHandle($hWinHttpRequest)
        _WinHttpCloseHandle($hWinHttpConnect)
        _WinHttpCloseHandle($hWinHttpOpen)
        ConsoleWrite(@CRLF & "> Downloaded " & $aSplit_URL[2] & $aSplit_URL[6] & " in " & Round(TimerDiff($hOptTime) / 1000, 2) & _
                " second(s)" & " at " & _ByteSuffix($iSizeBytes / Int(TimerDiff($hOptTime)) * 1000, -1) & "/s" & @CRLF)
        If Not $iFileMode Then
            Return $vData
        Else
            If FileExists($sFile_Name) Then
                Return $sFile_Name
            Else
                Return False
            EndIf
        EndIf
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc   ;==>_WinHttpGet
Func _GetStruct_Overlapped($iOffset, $hEvent = 0)
    Local $tOffset = DllStructCreate('int64')
    Local $tOffsetSplit = DllStructCreate('dword;dword', DllStructGetPtr($tOffset))
    DllStructSetData($tOffset, 1, $iOffset)

    $tStruct = DllStructCreate($tagOVERLAPPED)
    DllStructSetData($tStruct, "Internal", 0)
    DllStructSetData($tStruct, "InternalHigh", 0)
    DllStructSetData($tStruct, "Offset", DllStructGetData($tOffsetSplit, 1))
    DllStructSetData($tStruct, "OffsetHigh", DllStructGetData($tOffsetSplit, 2))
    DllStructSetData($tStruct, "hEvent", $hEvent)

    Return $tStruct
EndFunc   ;==>_GetStruct_Overlapped
Func _ByteSuffix($iBytes, $iRound = 2)
    ; UnKnown Author
    Local $A, $aArray[9] = [" B", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]
    While $iBytes > 1023
        $A += 1
        $iBytes /= 1024
    WEnd
    Return Round($iBytes, $iRound) & $aArray[$A]
EndFunc   ;==>_ByteSuffix
Func _Exit()
    DirRemove($sTemp_Dir, 1)
    Exit
EndFunc   ;==>_Exit

;Opt("WinTitleMatchMode", 3)
;~ Global $7z = "7za.exe"
;~ Global $7z_Extract_Cmd = ' e ', $7z_OutputDir_Cmd = ' -o'
;~ Func _7z_Extract($sFile_Name)
;~ If Not FileExists($7z) Then FileInstall("7za.exe", $7z)
;~ Return RunWait(@ComSpec & ' /k ' & $7z & $7z_Extract_Cmd & $sFile_Name & '-o"' & $sTemp_Dir & 'uTorrentPortable_3.2.0.27636_online.paf' & '"')
;~ EndFunc

I would like to be able to install uTorrent Portable silently.

I know how I should be able to do this. See here but I can't.

I can use 7-Zip to extract the contents but not with the standalone 7za.exe

I think if enough people become interested that we can hack it anyway.

So any ideas?

Edited by Decipher

Spoiler

censored.jpg

 

Share this post


Link to post
Share on other sites



If no one else beats me to it. I'll post the solution I worked out for uTorrents (working) and 7-Zip (not working).

The portableappsDownload function isn't working quite right...hmmm :(

Have to fix it anyway as it's part of a bigger project.

If you don't see it in a day or so PM me a reminder. :)

John Morrison

Share this post


Link to post
Share on other sites

Interesting

This is the link for portable uTorrent

[color="#0000ff"]<[/color][color="#800000"]a[/color] [color="#ff0000"]title[/color][color="#0000ff"]="Download" [/color][color="#ff0000"]class[/color][color="#0000ff"]="download-link" [/color]
[color="#ff0000"]href[/color][color="#0000ff"]="http://downloads.sourceforge.net/portableapps/uTorrentPortable_3.2.0.27636_online.paf.exe?download">[/color]
[color="#0000ff"]<[/color][color="#800000"]span[/color][color="#0000ff"]>[/color][color="#0000ff"]<[/color][color="#800000"]strong[/color][color="#0000ff"]>[/color]Download 3.2.0.27636[color="#0000ff"]</[/color][color="#800000"]strong[/color][color="#0000ff"]>[/color] [color="#0000ff"]<[/color][color="#800000"]em[/color][color="#0000ff"]>[/color]for Windows, Multilingual[color="#0000ff"]<[/color][color="#800000"]br[/color][color="#0000ff"] />[/color]1MB download / 1MB installed[color="#0000ff"]</[/color][color="#800000"]em[/color][color="#0000ff"]>[/color][color="#0000ff"]</[/color][color="#800000"]span[/color][color="#0000ff"]>[/color]
[color="#0000ff"]</[/color][color="#800000"]a[/color][color="#0000ff"]>[/color]

and this is the link for Portable 7-Zip

[color="#0000ff"]<[/color][color="#800000"]a[/color] 
[color="#ff0000"]href[/color][color="#0000ff"]=[url="http://sourceforge.net/projects/portableapps/files/7-Zip%20Portable/Additional%20Versions/7-ZipPortable_9.20_Rev_2.paf.exe/download"]http://sourceforge.net/projects/portableapps/files/7-Zip%20Portable/Additional%20Versions/7-ZipPortable_9.20_Rev_2.paf.exe/download[/url][/color]
[color="#ff0000"]class[/color][color="#0000ff"]="sourceforge_accelerator_link" [/color][color="#ff0000"]style[/color][color="#0000ff"]="width: 316px; height: 55px; display: inline-block">[/color]
Download 7-Zip Portable
[color="#0000ff"]</[/color][color="#800000"]a[/color][color="#0000ff"]>[/color]

Different...WHY???

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

This is the code for the PortableAppsUpdater in NSIS. The reason for the URI difference is because of the reconnaissance I conducted before I read this code.

It won't let me post the code. hmm..

The Source: http://sourceforge.net/projects/portableapps/files/Source%20%28PortableApps.com%20Plat%29/PortableApps.com%20Platform%2010.1%20Source/PortableAppsUpdaterSource10.1.2.7z/download

The Updater is able to run the standalone portable app installers silently.

ExecWait `"$PLUGINSDIR$strCurrentAppDownloadFile" /DESTINATION="$strPortableAppsPath" /AUTOCLOSE=true /HIDEINSTALLER=true /SILENT=true`

However we cannot because of unknown reasons.

This URL is being used in the code above:

http://downloads.sourceforge.net/portableapps

/uTorrentPortable_3.2.0.27636_online.paf.exe

Both work.

http://sourceforge.net/projects/portableapps/files

/uTorrent Portable/uTorrentPortable_3.2.0.27636_online.paf.exe

The uTorrent Portable download function is recursive and was meant only to download the latest uTorrent Portable version from SourceForge. It Reads the uTorrent Project Page's folder modified dates then reads the latest .exe from within the latest folder.

We could modify it to work with all the portable apps but thanks to John T. Haller I think that this is a better solution:

Also from the PAUpdater source: http://portableapps.com/updater/update.ini VIA

;IniRead
;IniReadSection
;IniReadSectionNames

_Get_PortableApp_Info("http://portableapps.com/updater/update.ini")

Func _Get_PortableApp_Info($sIni_URL)
    FileChangeDir($sTemp_Dir)
    Local $sUpdate_ini = _WinHttpGet($sIni_URL, True)
    Local $aPortableAppList = IniReadSectionNames($sUpdate_ini)
    _ArrayDisplay($aPortableAppList)
    Local $iRandom_Section = Random(1, UBound($aPortableAppList, 1) - 1, 1)
    Local $aPortableAppInfo = IniReadSection($sUpdate_ini, $aPortableAppList[$iRandom_Section]) ; Display Random Section.
    _ArrayDisplay($aPortableAppInfo)
    _Exit()
EndFunc   ;==>_Get_PortableApp_Info

The UserAgent is also the same as in the source. This idea is to an online database with the windows program information sorta like the update.ini.

The users could also potentially be the seeders for others to download.

There is project already called winget. I couldn't get it to work.

I love linux's apt-get install :)

or we could just right functions to allow people to download the portable apps and optionally install to their system, creating shortcuts in the startmenu, desktop and quicklaunch.

Just so there is no confusion the link to PA forums page is where I have asked why John Haller has blocked the functionallity with the code present and working with the updater and I'm the author of the Autoit code above. :)

Latest Developments:

#cs ----------------------------------------------------------------------------
    
    AutoIt Version: 3.3.9.4 (beta)
    Author: Decipher
    
    Script Function:
    WinGet - Windows Program Downloader/Installer
    
#ce ----------------------------------------------------------------------------

HttpSetUserAgent("Wget/1.13.4") ; This must stay the same.

#include <String.au3>
#include <Array.au3>
#include <Date.au3>
#include <File.au3>
#include <IncludesWinHTTP.au3>
#include <WinAPIEx.au3>

Global $sTemp_Dir = _TempFile()
DirCreate($sTemp_Dir)

HotKeySet("{ESC}", "_Exit")

Global Const $sPA_Download_URI = "http://downloads.sourceforge.net/portableapps"
Global Const $sPA_DataBase_URI = "http://portableapps.com/updater/update.ini"

_Test_Function("uTorrent") ; not case sensitive
_Test_Function("7-Zip")
_Test_Function("Firefox")
_Test_Function("ThunderBird") ; Test _Download_PortableApp
_Test_Function("Chrome")
_Test_Function("IObit")
_Test_Function("NSIS")
_Test_Function("OpenOffice")

_Exit()


Func _Test_Function($sPA_Name)
    Local $uTorrent_Portable = _Download_PortableApp($sPA_Name)

    If @error Then
        MsgBox(0, "Portable Download Failed!", "Function Error Code: " & @error)
    Else
        MsgBox(0, "Exit Code", RunWait($uTorrent_Portable & " /DESTINATION=" & '"' & @WorkingDir & '"' & " /AUTOCLOSE=true /HIDEINSTALLER=true /SILENT=true"))
        ; The above line should work to run the installer silently but dosen't. We need to hack this people.
    EndIf
EndFunc   ;==>_Test_Function

Func _Download_PortableApp($sPA_Name)
    FileChangeDir($sTemp_Dir) ; Set Download Location
    Local $sPA_DB_INI = _WinHttpGet($sPA_DataBase_URI, True) ; FileName automatically determined as "update.ini"
    If Not $sPA_DB_INI Then Return SetError(1, 0, 0) ; If file wasn't created the return value is False otherwise the full file path is returned.

    Local $aPA_List = IniReadSectionNames($sPA_DB_INI)
    If @error Then Return SetError(2, 0, 0)

    For $iPA = 1 To $aPA_List[0]
        If StringInStr($aPA_List[$iPA], $sPA_Name, 2) Then ExitLoop
        If $iPA = $aPA_List[0] Then Return SetError(3, 0, 0) ; Return if Portable app info wasn't found.
    Next

;~ Local $aPA_Info = IniReadSection($sPA_DB_INI, $aPA_List[$iPA])
;~ If @error Then Return SetError(4, 0, 0)

;~ Local $iRandom_Section = Random(1, $aPA_List[0], 1)
;~ Local $aPA_Info = IniReadSection($sPA_DB_INI, $aPA_List[$iRandom_Section]) ; Display Random Section.
;~ _ArrayDisplay($aPA_Info)

    Local $sPA_Download_File = IniRead($sPA_DB_INI, $aPA_List[$iPA], "DownloadFile", False)
    If Not $sPA_Download_File Then Return SetError(4, 0, 0)

    $sPA_Download_File = _WinHttpGet($sPA_Download_URI & "/" & $sPA_Download_File, True)
    If Not $sPA_Download_File Then Return SetError(5, 0, 0)

    Return $sPA_Download_File
EndFunc   ;==>_Download_PortableApp
Func _WinHttpGet($sDownload_URI, $iFileMode = False, $sReferer = Default, $sFile_Name = Default)
    Local $aSplit_URL = _WinHttpCrackUrl($sDownload_URI)
    Local $hOptTime = TimerInit()
    Local $hWinHttpOpen = _WinHttpOpen()
    Local $hWinHttpConnect = _WinHttpConnect($hWinHttpOpen, $aSplit_URL[2])
    Local $hWinHttpRequest = _WinHttpOpenRequest($hWinHttpConnect, "GET", $aSplit_URL[6], Default, $sReferer)
    _WinHttpSendRequest($hWinHttpRequest)
    _WinHttpReceiveResponse($hWinHttpRequest)
    Local $iSizeBytes = _WinHttpQueryHeaders($hWinHttpRequest, $WINHTTP_QUERY_CONTENT_LENGTH)
    If _WinHttpQueryDataAvailable($hWinHttpRequest) Then
        Local $vNTdll = DllOpen("ntdll.dll")
        Local $nSpeedLimit = 1024 * 5000 ; 1024 * Kilobytes per second
        Local $iBytePerStep = 8192
        Local $iBufferSize = 1024 * 1024
        Local $iSleepTime = Round($iBytePerStep / $nSpeedLimit * 1000)
        Local $tPrecSleep = DllStructCreate("int64 time;")
        Local $pPrecSleep = DllStructGetPtr($tPrecSleep)
        If $iFileMode Then
            If $sFile_Name = Default Then $sFile_Name = @WorkingDir & "" & StringTrimLeft($aSplit_URL[6], StringInStr($aSplit_URL[6], "/", 0, -1))
            Local $hFile = _WinAPI_CreateFileEx($sFile_Name, $CREATE_NEW, $GENERIC_WRITE, $FILE_SHARE_READ, $FILE_ATTRIBUTE_NORMAL)
        EndIf
        Local $tBuffer = DllStructCreate("byte[" & $iBufferSize & "]")
        Local $pBuffer = DllStructGetPtr($tBuffer)
        Local $tOverlapped = _GetStruct_Overlapped(0)
        Local $pOverlapped = DllStructGetPtr($tOverlapped)
        Local $iByteWritten = 0
        Local $iOffsetFile = 0
        If $iFileMode Then
            Local $vData = Binary("")
        Else
            Local $vData = ""
        EndIf
        Local $nT = TimerInit()
        Local $iError, $iBufferContent, $iByteWritten
        Do
            $iSleepTemp = ($iSleepTime - TimerDiff($nT))
            If $iSleepTemp > 0 Then
                DllStructSetData($tPrecSleep, "time", -10000 * $iSleepTemp)
                DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
            EndIf
            $nT = TimerInit() ; Reset Timer
            If $iFileMode Then
                $vData &= _WinHttpReadData($hWinHttpRequest, 2, $iBytePerStep) ; Get Chunk
            Else
                $vData &= _WinHttpReadData($hWinHttpRequest)
            EndIf
            $iError = @error
            If $iFileMode Then
                $iBufferContent = BinaryLen($vData)
                If $iBufferContent >= $iBufferSize - $iBytePerStep Or $iError = -1 Then
                    _WinAPI_GetOverlappedResult($hFile, $pOverlapped, $iByteWritten, True)
                    DllStructSetData($tBuffer, 1, $vData)
                    $vData = Binary("")
                    $iOffsetFile += $iByteWritten
                    $tOverlapped = _GetStruct_Overlapped($iOffsetFile)
                    $pOverlapped = DllStructGetPtr($tOverlapped)
                    _WinAPI_WriteFile($hFile, $pBuffer, $iBufferContent, $iByteWritten, $pOverlapped)
                EndIf
            EndIf
        Until $iError = -1
        If $iFileMode Then _WinAPI_CloseHandle($hFile)
        DllClose($vNTdll)
        _WinHttpCloseHandle($hWinHttpRequest)
        _WinHttpCloseHandle($hWinHttpConnect)
        _WinHttpCloseHandle($hWinHttpOpen)
        ConsoleWrite(@CRLF & "> Downloaded " & $aSplit_URL[2] & $aSplit_URL[6] & " in " & Round(TimerDiff($hOptTime) / 1000, 2) & _
                " second(s)" & " at " & _ByteSuffix($iSizeBytes / Int(TimerDiff($hOptTime)) * 1000, -1) & "/s" & @CRLF)
        If Not $iFileMode Then
            Return $vData
        Else
            If FileExists($sFile_Name) Then
                Return $sFile_Name
            Else
                Return False
            EndIf
        EndIf
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc   ;==>_WinHttpGet
Func _GetStruct_Overlapped($iOffset, $hEvent = 0)
    Local $tOffset = DllStructCreate('int64')
    Local $tOffsetSplit = DllStructCreate('dword;dword', DllStructGetPtr($tOffset))
    DllStructSetData($tOffset, 1, $iOffset)

    $tStruct = DllStructCreate($tagOVERLAPPED)
    DllStructSetData($tStruct, "Internal", 0)
    DllStructSetData($tStruct, "InternalHigh", 0)
    DllStructSetData($tStruct, "Offset", DllStructGetData($tOffsetSplit, 1))
    DllStructSetData($tStruct, "OffsetHigh", DllStructGetData($tOffsetSplit, 2))
    DllStructSetData($tStruct, "hEvent", $hEvent)

    Return $tStruct
EndFunc   ;==>_GetStruct_Overlapped
Func _ByteSuffix($iBytes, $iRound = 2)
    ; UnKnown Author
    Local $A, $aArray[9] = [" B", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]
    While $iBytes > 1023
        $A += 1
        $iBytes /= 1024
    WEnd
    Return Round($iBytes, $iRound) & $aArray[$A]
EndFunc   ;==>_ByteSuffix
Func _Exit()
    DirRemove($sTemp_Dir, 1)
    Exit
EndFunc   ;==>_Exit

When I run the PortableAppsUpdater.exe from explorer I get this message:

The PortableApps.com Updater must be run from the PortableApps.com Platform. It will not function properly when run directly.

I know that someone has to have a idea on how they are checking this. The word SPOOF comes to mind.

*Update - Hacked! It will run when provided with the appropiate command line switches

PortableAppsUpdater.exe /STARTUP=true /MODE=UPDATE

So maybe the updater is passing the installer a hidden switch that has eluded my detection?

I'm going to create a basic autoit script that will run the installers but matches the updaters filename and res information. I'll update this post if successfull.

The updater is digitally signed. The installers undoughtfully are checking to see if its parent process sig match. How can we bypass this.

Authenticode:

// Report generated by PE Explorer 1.99 (www.heaventools.com)

// File name: C:Documents and SettingsOwnerMy DocumentsDownloadsPortableAppsPortableApps.comPortableAppsUpdater.exe

// Created : 07.08.2012 13:46

// Type : Digital Authenticode Signature Information

//****************************************************************************

//Authenticode Signature

This digital signature is OK.

Digest Algorithm = SHA1

Link Checksum = 0003A7BD

Real Checksum = 0003A7BD

Signed File Hash = CF 65 B9 B2 05 4C 75 02 69 D6 E6 B8 34 A1 12 12 84 C5 70 A3

Real File Hash = CF 65 B9 B2 05 4C 75 02 69 D6 E6 B8 34 A1 12 12 84 C5 70 A3

//****************************************************************************

//****************************************************************************

//Signature Details

//----------------------------------------------------------------------------

//Item 0 (Rare Ideas, LLC)

This digital signature is OK.

Name of Signer = Rare Ideas, LLC

Email Address = Not available

Signing Time = 6/15/2012 2:16:43 PM

Version = 2

Issuer = Country = GB

State or Province = Greater Manchester

Locality = Salford

Organization = COMODO CA Limited

Common Name = COMODO Code Signing CA 2

Serial Number = 00 93 2F C9 AF 0E FA 79 D8 A3 F7 71 68 1F E2 03

34

Digest Algorithm = SHA1 (2B 0E 03 02 1A)

Digest Encryption Algorithm = RSA (2A 86 48 86 F7 0D 01 01 01)

Authenticated Attributes:

1.3.6.1.4.1.311.2.1.12 = 30 00

Content Type = 06 0A 2B 06 01 04 01 82 37 02 01 04

1.3.6.1.4.1.311.2.1.11 = 30 0C 06 0A 2B 06 01 04 01 82 37 02 01 15

Message Digest = 04 14 FF DF 5E 10 43 30 46 11 A5 3E F4 E3 2E C9

BE 19 4C FA 6E 6E

Unauthenticated Attributes:

Counter Signature = 30 82 01 68 02 01 01 30 67 30 53 31 0B 30 09 06

03 55 04 06 13 02 55 53 31 17 30 15 06 03 55 04

0A 13 0E 56 65 72 69 53 69 67 6E 2C 20 49 6E 63

2E 31 2B 30 29 06 03 55 04 03 13 22 56 65 72 69

53 69 67 6E 20 54 69 6D 65 20 53 74 61 6D 70 69

6E 67 20 53 65 72 76 69 63 65 73 20 43 41 02 10

79 A2 A5 85 F9 D1 15 42 13 D9 B8 3E F6 B6 8D ED

30 09 06 05 2B 0E 03 02 1A 05 00 A0 5D 30 18 06

09 2A 86 48 86 F7 0D 01 09 03 31 0B 06 09 2A 86

48 86 F7 0D 01 07 01 30 1C 06 09 2A 86 48 86 F7

0D 01 09 05 31 0F 17 0D 31 32 30 36 31 35 31 34

31 36 34 33 5A 30 23 06 09 2A 86 48 86 F7 0D 01

09 04 31 16 04 14 27 8E E7 CE A7 54 D0 F3 62 F9

2E 24 8B D1 51 39 CF 61 DB 61 30 0D 06 09 2A 86

48 86 F7 0D 01 01 01 05 00 04 81 80 14 88 25 07

38 99 D4 38 CC 14 90 C0 BB 95 6B EE 40 C4 60 18

C1 52 C8 17 CB F7 0D 9A 3A A4 1D 06 49 87 9C 62

53 95 A5 64 81 91 93 C4 12 31 F5 FC FA D3 41 70

D6 E9 25 7E 6B D0 F4 C4 AB 8E 0D 9F ED 4F 5B 56

4D AF D4 BC 8F 13 54 D4 BC 26 40 BF CC 1C 81 00

15 34 95 2A 70 FD B9 09 B8 C6 3A 32 0A 03 AE A1

20 AE 32 C4 34 2B C9 F0 45 5E 36 F9 6C 99 DC AA

1F 42 6B 2C 96 CB 10 BE E7 BA AA D1

//****************************************************************************

//****************************************************************************

//Certificate Details

//----------------------------------------------------------------------------

//Item 0 (Rare Ideas, LLC)

Version = 3

Issued by = COMODO Code Signing CA 2

Issued to = Rare Ideas, LLC

Valid from = 2/16/2012

Valid to = 2/15/2013 11:59:59 PM

Issued to:

Country = US

State or Province = NY

Locality = New York

Organization = Rare Ideas, LLC

Common Name = Rare Ideas, LLC

Issued by:

Country = GB

State or Province = Greater Manchester

Locality = Salford

Organization = COMODO CA Limited

Common Name = COMODO Code Signing CA 2

Serial Number = 00 93 2F C9 AF 0E FA 79 D8 A3 F7 71 68 1F E2 03

34

Signature Algorithm = SHA1 with RSA

Issuer = Country = GB

State or Province = Greater Manchester

Locality = Salford

Organization = COMODO CA Limited

Common Name = COMODO Code Signing CA 2

Valid from = 2/16/2012

Valid to = 2/15/2013 11:59:59 PM

Subject = Country = US

Postal Code = 10009

State or Province = NY

Locality = New York

Street Address = PO Box 227

Organization = Rare Ideas, LLC

Common Name = Rare Ideas, LLC

Size = 1308

Signature = A8 06 EC 6E 2C CE D8 83 AD AE 80 9A F0 D8 92 4F

76 19 8D 95 5A CE 4F BA 84 47 A5 A0 31 01 BA C8

B5 98 9B 2B D6 4F 3E 28 93 77 FF 3F 8C 7F 12 F0

C0 6A DA 5D E3 5B 14 AD 02 9D 72 7F 3B BE BE F5

28 C3 F2 20 7B 2C CF B5 D6 50 8E 2F D8 91 0A BE

26 90 08 03 48 ED 12 7E 61 FE E5 59 E3 FD 4D 9F

70 99 2B 3B 35 8C 36 F6 F6 4D 3C 37 EE 25 5D CE

F4 77 06 B5 85 4D 67 76 D3 B4 39 32 F1 E0 6F DE

B4 81 56 A3 A4 D5 A5 D1 21 74 D6 06 BD 30 DE 7F

7B 00 B8 14 FB A3 9C 71 1A 83 E7 2A 42 9C 20 60

EE 23 4B FE 9A D3 A9 28 FE 67 CC 28 A1 EC BF 00

4A 99 60 EA CC 34 F3 4E 71 E6 61 4B 7D 2F 9C 02

63 D0 90 95 EB 27 56 82 76 CD EA CE 56 22 86 EC

EA F0 C1 B3 BE 54 0C CB 1D C2 E7 48 D7 B4 B4 A4

AB 9E 2F 77 76 AF 31 3E 56 50 37 FB C7 1D CF 95

E5 24 7F 69 F9 94 23 C6 A9 00 5B 0F B4 72 C6 25

Self signed = False

Public key = RSA (2056)

RSA Modulus = 00 A2 9C F3 27 42 13 D3 7C 79 01 4F 9D B6 A5 2F

1F 48 E1 7C 6A 06 36 BC 30 8D E8 14 27 6F B4 E7

6D 8F 92 2D 0C 18 7C 83 36 2B 34 47 03 D9 7B 06

93 4F BB 26 09 B0 55 57 7A 3D 84 0D 05 27 52 6C

5E B1 59 EF 5A 4E 1C 07 02 DA 07 12 00 68 0E F4

C1 14 E2 D1 E4 35 85 7F A5 D9 2C 9F 2A F1 18 05

DE 69 30 77 2E D7 E8 17 B8 B7 93 50 61 07 10 58

23 E4 83 DF 4F FC 87 AB 57 64 B8 E6 71 6A 70 5A

4C D8 6F 81 F1 8E 85 4E F2 EE 1C EC ED 53 76 5B

1A DF AA 0A AF F8 8D 38 8A 7C 49 5F E3 25 F2 9D

DD 85 67 22 04 D1 AF BC A0 FA 95 59 00 8B 3B E1

12 01 B7 1B 10 4D 38 F0 5A B0 76 41 F4 9B 28 E5

A2 34 D4 71 FB 3B 6B 05 B6 E2 DF B4 71 1E B0 BC

1E C4 19 95 0C 89 36 4C 01 D2 5F 41 8E 9B 93 DB

4D B5 D0 DD B6 D0 90 51 F2 DF 33 E7 36 1A 85 5D

D0 DB AE 42 FD AB 6F EF 31 4B 3E E4 81 D4 BF D4

05

RSA Public Key = 01 00 01

Authority Information Access = Access Method=1.3.6.1.5.5.7.48.2, 1.3.6.1.5.5.7.48.1

Access Location.URI=http://crt.comodoca.com/COMODOCodeSigningCA2.crt

, http://ocsp.comodoca.com

Authority Key Identifier = Key Identifier=1E C5 B1 2C 7D 87 DA 02 68 7C 25 BC 0C 07 84 3F B6 CF DE F1

Basic constraints = 30 00

Certificate Policies = CPS URI=https://secure.comodo.net/CPS

Policy Identifier=2B 06 01 04 01 B2 31 01 02 01 03 02

Explicit Text=

CRL Distribution Points = Name.URI=http://crl.comodoca.com/COMODOCodeSigningCA2.crl

Reason=Unspecified, Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Remove From CRL, Privilege Withdrawn, AA Compromise

Extended key usage = Code signing, Custom Usage : 0

Key usage = Digital signature

Netscape Cert Type = Object Signing

Subject Key Identifier = F6 3D 33 B4 22 0E 39 87 0B BC 67 DE C1 C9 60 EF 67 37 7E B2

//----------------------------------------------------------------------------

//Item 1 (COMODO Code Signing CA 2)

Version = 3

Issued by = UTN-USERFirst-Object

Issued to = COMODO Code Signing CA 2

Valid from = 8/24/2011

Valid to = 5/30/2020 10:48:38 AM

Issued to:

Country = GB

State or Province = Greater Manchester

Locality = Salford

Organization = COMODO CA Limited

Common Name = COMODO Code Signing CA 2

Issued by:

Country = US

State or Province = UT

Locality = Salt Lake City

Organization = The USERTRUST Network

Organization Unit = http://www.usertrust.com

Common Name = UTN-USERFirst-Object

Serial Number = 10 70 9D 4F F5 54 08 D7 30 60 01 D8 EA 91 75 BB

Signature Algorithm = SHA1 with RSA

Issuer = Country = US

State or Province = UT

Locality = Salt Lake City

Organization = The USERTRUST Network

Organization Unit = http://www.usertrust.com

Common Name = UTN-USERFirst-Object

Valid from = 8/24/2011

Valid to = 5/30/2020 10:48:38 AM

Subject = Country = GB

State or Province = Greater Manchester

Locality = Salford

Organization = COMODO CA Limited

Common Name = COMODO Code Signing CA 2

Size = 1259

Signature = 95 89 77 93 68 01 5E 7C D9 2D 37 07 90 5D 5A 42

5E 0C 64 B4 36 B5 0F F6 AB D5 39 27 DE 22 46 A4

49 1C 66 4B 46 19 59 2E 79 49 03 F6 9C 92 DF 6D

50 35 5C 0C 91 2E 60 03 59 D0 F1 64 F7 69 09 F6

7E FE EB 34 B3 6D B1 BF 66 9C A3 BA 31 78 B9 87

35 61 3D 92 31 1B EF F4 E8 9E D6 AC 45 FA 0C 36

3C 80 67 BB BD EF 2E C2 90 E1 3D 71 2F 3B C1 B0

58 7E 45 C3 52 71 03 07 F6 F3 39 4D 8B 36 21 1B

01 DF D9 DA 5E 2B EB 0E 97 80 1E 44 1C 50 88 F5

C6 12 33 4A A8 4D A5 8D 2F 94 0C 7B C6 BF 9A 2C

C3 32 CD BD 8C 27 26 F0 E1 30 03 50 06 82 BC F4

3B B3 83 75 06 C6 EF BA EE D3 80 F8 52 C6 AC CB

79 F2 38 9E 7B B0 92 58 42 91 05 C8 96 21 AD B9

4B 16 81 14 69 F1 37 B0 FE 34 F7 DC B0 DF 97 F5

43 10 9B 76 8F B4 65 F5 E8 9F 13 B7 1E AC 6F C4

69 8A 5F BA 3C 61 7E 5E 49 86 23 13 2E AF 15 48

Self signed = False

Public key = RSA (2056)

RSA Modulus = 00 CB F8 E7 A7 E8 F1 97 28 40 68 80 37 D2 C8 3F

8E 92 8A 92 37 87 47 80 EA 4C 99 CF 6E F9 15 47

BD EE 75 F4 44 AC D0 C3 D4 4D F7 19 C0 D3 3C 4D

C1 47 B9 59 65 16 93 8C D9 0A 84 9B 9F E8 F6 6A

63 58 FE 5F DC D1 7F 4B 51 9F 00 1C 00 87 54 20

07 57 A0 82 C9 2F 98 AF 33 8A BB 7B 80 22 25 6A

6C AF C2 2C 6C 79 13 BD A3 2A 48 D6 B5 8E 61 55

E9 6B E8 3D 80 BF 14 03 85 18 8E 7E 4C E9 C2 19

88 73 92 72 CD FA FF 50 4D CB 2C A6 7B 1A 73 B1

00 90 2C D9 32 E2 FB FD AC 95 42 36 EC 34 C5 13

53 68 B2 C1 9F 40 9F DA 7B C8 9D 62 6C 93 A2 42

D7 79 9F 97 4F 31 5B 50 21 A1 AB AF D9 1C B2 CE

75 BE 5B 2C 56 00 24 8D 11 C1 75 1F F0 FE D2 95

FE F0 E1 31 23 18 67 C0 5B 13 FD 5A 98 94 94 FF

FF 59 02 1F 00 AC E6 F1 F2 FA 3A 73 B3 1D 42 FC

54 75 CF 51 31 2F E3 DB 81 D9 77 23 2A 4F 59 CE

23

RSA Public Key = 01 00 01

Authority Information Access = Access Method=1.3.6.1.5.5.7.48.2, 1.3.6.1.5.5.7.48.1

Access Location.URI=http://crt.usertrust.com/UTNAddTrustObject_CA.crt

, http://ocsp.usertrust.com

Authority Key Identifier = Key Identifier=DA ED 64 74 14 9C 14 3C AB DD 99 A9 BD 5B 28 4D 8B 3C C9 D8

Basic constraints = Subject Type=CA, Path length constraint=0

Certificate Policies = Policy Identifier=55 1D 20 00

Explicit Text=

CRL Distribution Points = Name.URI=http://crl.usertrust.com/UTN-USERFirst-Object.crl

Reason=Unspecified, Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Remove From CRL, Privilege Withdrawn, AA Compromise

Extended key usage = Code signing, Custom Usage : 0

Key usage = Certificate signing, CRL signing

Subject Key Identifier = 1E C5 B1 2C 7D 87 DA 02 68 7C 25 BC 0C 07 84 3F B6 CF DE F1

//----------------------------------------------------------------------------

//Item 2 (UTN-USERFirst-Object)

Version = 3

Issued by = AddTrust External CA Root

Issued to = UTN-USERFirst-Object

Valid from = 6/7/2005 8:09:10 AM

Valid to = 5/30/2020 10:48:38 AM

Issued to:

Country = US

State or Province = UT

Locality = Salt Lake City

Organization = The USERTRUST Network

Organization Unit = http://www.usertrust.com

Common Name = UTN-USERFirst-Object

Issued by:

Country = SE

Organization = AddTrust AB

Organization Unit = AddTrust External TTP Network

Common Name = AddTrust External CA Root

Serial Number = 42 1A F2 94 09 84 19 1F 52 0A 4B C6 24 26 A7 4B

Signature Algorithm = SHA1 with RSA

Issuer = Country = SE

Organization = AddTrust AB

Organization Unit = AddTrust External TTP Network

Common Name = AddTrust External CA Root

Valid from = 6/7/2005 8:09:10 AM

Valid to = 5/30/2020 10:48:38 AM

Subject = Country = US

State or Province = UT

Locality = Salt Lake City

Organization = The USERTRUST Network

Organization Unit = http://www.usertrust.com

Common Name = UTN-USERFirst-Object

Size = 1160

Signature = 4D 42 2F A6 C1 8A EB 07 80 90 58 46 8C F8 19 39

66 2A 3C 5A 2C 6D CF D4 D9 87 55 8D 79 0B 12 88

7B 40 8F D5 C7 F8 4B 8D 55 16 63 AD B7 57 DC 3B

2B BD D3 C1 4F 1E 03 87 4B 44 9B E3 E2 40 45 26

F3 26 49 2B 6A 84 F1 54 7A D4 42 DA FC D3 6A BB

66 7E CA 9E EA E9 BB DC 07 C7 C3 92 4E 83 3C 81

49 9F 92 D5 32 09 EA 49 2E A1 11 71 9A 36 D2 C5

4E 68 B6 CB 0E 1B 25 16 AF 6C DE 5D 76 D8 1F 72

B1 93 26 86 17 DB 18 DE AF 45 E9 DF FB 98 AF 14

18 ED A4 5E F6 89 94 45 F0 55 04 4A DD FF 27 DD

06 4A 40 F6 B4 BC F1 E4 0F 99 02 BB FD 5D 0E 2E

28 C1 BE 3B 5F 1A 3F 97 10 84 BC 16 3E D8 A3 9C

63 1D 66 CB 5C 5F DA 3E F3 0F 0A 09 35 22 DB DB

C0 3F 00 F9 E6 0D 5D 67 D1 FD A0 1E 03 2B D9 40

F7 BE CC 87 66 54 80 A6 A3 B8 F5 19 62 D5 D2 26

B1 98 26 EE 9A CB 44 A7 45 5A 81 95 15 1A F5 51

Self signed = False

Public key = RSA (2056)

RSA Modulus = 00 CE AA 81 3F A3 A3 61 78 AA 31 00 55 95 11 9E

27 0F 1F 1C DF 3A 9B 82 68 30 C0 4A 61 1D F1 2F

0E FA BE 79 F7 A5 23 EF 55 51 96 84 CD DB E3 B9

6E 3E 31 D8 0A 20 67 C7 F4 D9 BF 94 EB 47 04 3E

02 CE 2A A2 5D 87 04 09 F6 30 9D 18 8A 97 B2 AA

1C FC 41 D2 A1 36 CB FB 3D 91 BA E7 D9 70 35 FA

E4 E7 90 C3 9B A3 9B D3 3C F5 12 99 77 B1 B7 09

E0 68 E6 1C B8 F3 94 63 88 6A 6A FE 0B 76 C9 BE

F4 22 E4 67 B9 AB 1A 5E 77 C1 85 07 DD 0D 6C BF

EE 06 C7 77 6A 41 9E A7 0F D7 FB EE 94 17 B7 FC

85 BE A4 AB C4 1C 31 DD D7 B6 D1 E4 F0 EF DF 16

8F B2 52 93 D7 A1 D4 89 A1 07 2E BF E1 01 12 42

1E 1A E1 D8 95 34 DB 64 79 28 FF BA 2E 11 C2 E5

E8 5B 92 48 FB 47 0B C2 6C DA AD 32 83 41 F3 A5

E5 41 70 FD 65 90 6D FA FA 51 C4 F9 BD 96 2B 19

04 2C D3 6D A7 DC F0 7F 6F 83 65 E2 6A AB 87 86

75

RSA Public Key = 01 00 01

Authority Information Access = Access Method=1.3.6.1.5.5.7.48.1

Access Location.URI=http://ocsp.usertrust.com

Authority Key Identifier = Key Identifier=AD BD 98 7A 34 B4 26 F7 FA C4 26 54 EF 03 BD E0 24 CB 54 1A

Basic constraints = Subject Type=CA, Path length constraint=-1

Certificate Policies = Policy Identifier=55 1D 20 00

Explicit Text=

CRL Distribution Points = Name.URI=http://crl.usertrust.com/AddTrustExternalCARoot.crl

Reason=Unspecified, Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Remove From CRL, Privilege Withdrawn, AA Compromise

Key usage = Certificate signing, CRL signing

Subject Key Identifier = DA ED 64 74 14 9C 14 3C AB DD 99 A9 BD 5B 28 4D 8B 3C C9 D8

//----------------------------------------------------------------------------

//Item 3 (VeriSign Time Stamping Services CA)

Version = 3

Issued by = Thawte Timestamping CA

Issued to = VeriSign Time Stamping Services CA

Valid from = 12/4/2003

Valid to = 12/3/2013 11:59:59 PM

Issued to:

Country = US

Organization = VeriSign, Inc.

Common Name = VeriSign Time Stamping Services CA

Issued by:

Country = ZA

State or Province = Western Cape

Locality = Durbanville

Organization = Thawte

Organization Unit = Thawte Certification

Common Name = Thawte Timestamping CA

Serial Number = 47 BF 19 95 DF 8D 52 46 43 F7 DB 6D 48 0D 31 A4

Signature Algorithm = SHA1 with RSA

Issuer = Country = ZA

State or Province = Western Cape

Locality = Durbanville

Organization = Thawte

Organization Unit = Thawte Certification

Common Name = Thawte Timestamping CA

Valid from = 12/4/2003

Valid to = 12/3/2013 11:59:59 PM

Subject = Country = US

Organization = VeriSign, Inc.

Common Name = VeriSign Time Stamping Services CA

Size = 968

Signature = 4A 6B F9 EA 58 C2 44 1C 31 89 79 99 2B 96 BF 82

AC 01 D6 1C 4C CD B0 8A 58 6E DF 08 29 A3 5E C8

CA 93 13 E7 04 52 0D EF 47 27 2F 00 38 B0 E4 C9

93 4E 9A D4 22 62 15 F7 3F 37 21 4F 70 31 80 F1

8B 38 87 B3 E8 E8 97 00 FE CF 55 96 4E 24 D2 A9

27 4E 7A AE B7 61 41 F3 2A CE E7 C9 D9 5E DD BB

2B 85 3E B5 9D B5 D9 E1 57 FF BE B4 C5 7E F5 CF

0C 9E F0 97 FE 2B D3 3B 52 1B 1B 38 27 F7 3F 4A

Self signed = False

Public key = RSA (2056)

RSA Modulus = 00 A9 CA B2 A4 CC CD 20 AF 0A 7D 89 AC 87 75 F0

B4 4E F1 DF C1 0F BF 67 61 BD A3 64 1C DA BB F9

CA 33 AB 84 30 89 58 7E 8C DB 6B DD 36 9E 0F BF

D1 EC 78 F2 77 A6 7E 6F 3C BF 93 AF 0D BA 68 F4

6C 94 CA BD 52 2D AB 48 3D F5 B6 D5 5D 5F 1B 02

9F FA 2F 6B 1E A4 F7 A3 9A A6 1A C8 02 E1 7F 4C

52 E3 0E 60 EC 40 1C 7E B9 0D DE 3F C7 B4 DF 87

BD 5F 7A 6A 31 2E 03 99 81 13 A8 47 20 CE 31 73

0D 57 2D CD 78 34 33 95 12 99 12 B9 DE 68 2F AA

E6 E3 C2 8A 8C 2A C3 8B 21 87 66 BD 83 58 57 6F

75 BF 3C AA 26 87 5D CA 10 15 3C 9F 84 EA 54 C1

0A 6E C4 FE C5 4A DD B9 07 11 97 22 7C DB 3E 27

D1 1E 78 EC 9F 31 C9 F1 E6 22 19 DB C4 B3 47 43

9A 1A 5F A0 1E 90 E4 5E F5 EE 7C F1 7D AB 62 01

8F F5 4D 0B DE D0 22 56 A8 95 CD AE 88 76 AE EE

BA 0D F3 E4 4D D9 A0 FB 68 A0 AE 14 3B B3 87 C1

BB

RSA Public Key = 01 00 01

Authority Information Access = Access Method=1.3.6.1.5.5.7.48.1

Access Location.URI=http://ocsp.verisign.com

Basic constraints = Subject Type=CA, Path length constraint=0

CRL Distribution Points = Name.URI=http://crl.verisign.com/ThawteTimestampingCA.crl

Reason=Unspecified, Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Remove From CRL, Privilege Withdrawn, AA Compromise

Extended key usage = Time stamping, Custom Usage : 0

Key usage = Certificate signing, CRL signing

Subject Alternative Name = Directory Name=Common Name = TSA2048-1-53

//----------------------------------------------------------------------------

//Item 4 (Symantec Time Stamping Services Signer - G3)

Version = 3

Issued by = VeriSign Time Stamping Services CA

Issued to = Symantec Time Stamping Services Signer - G3

Valid from = 5/1/2012

Valid to = 12/31/2012 11:59:59 PM

Issued to:

Country = US

Organization = Symantec Corporation

Common Name = Symantec Time Stamping Services Signer - G3

Issued by:

Country = US

Organization = VeriSign, Inc.

Common Name = VeriSign Time Stamping Services CA

Serial Number = 79 A2 A5 85 F9 D1 15 42 13 D9 B8 3E F6 B6 8D ED

Signature Algorithm = SHA1 with RSA

Issuer = Country = US

Organization = VeriSign, Inc.

Common Name = VeriSign Time Stamping Services CA

Valid from = 5/1/2012

Valid to = 12/31/2012 11:59:59 PM

Subject = Country = US

Organization = Symantec Corporation

Common Name = Symantec Time Stamping Services Signer - G3

Size = 931

Signature = 1E 98 AA 27 B7 78 B5 08 B5 C9 72 6D B7 DF C0 0E

98 A6 35 C4 88 C9 D2 F6 6D F1 4B 1A FB D5 F9 2D

99 00 9E D1 E7 9B 8B E1 3F BD 39 80 0C 66 CD 07

BC 5C 98 54 A6 94 BA 10 D1 4E 8B AB F5 6F 65 CC

67 09 A2 80 7C 52 E8 0E 03 D6 6B 7A C6 05 18 EC

C8 AC 42 7C 07 2C A7 3D 08 66 DC 00 ED FD 94 1D

73 F2 72 98 93 B1 11 D6 8F EF 8E EA AC F4 96 51

0C D0 8D DF 31 52 4F 5E AF 7D A7 4A 75 E6 4E CE

2B 9F 29 2B E7 CF 5D 9F 03 7E 6E 27 7B 23 AD 62

29 66 AF 92 E8 2C CE BD 9C 7F DC CD 17 3C 43 C2

09 3F 75 45 C7 9E E4 D7 60 7F 97 C6 E4 AA C7 69

F5 FC CD 74 AC 2C B0 48 C1 50 4E 70 56 1E B5 35

D3 8E BE B1 ED AC BD FE 0C EC 85 7D D5 BB 85 66

44 19 5D 9F 93 EB 82 BA 63 9E D3 7C 61 FF C8 1B

D9 23 58 7F 30 A3 66 A1 39 26 5E 92 C3 3C CB 37

32 FA F5 A3 8D DC D5 B0 A3 E9 25 36 55 D7 81 FA

Self signed = False

Public key = RSA (1032)

RSA Modulus = 00 A9 59 66 74 DA 3D 8A 7D 7A D8 FC F5 80 44 7B

FE 47 6A 14 55 4E 50 47 0B EC D3 ED CE F6 38 F7

4F 69 B9 B1 F0 B6 78 82 0A 8C 76 16 67 E2 02 AD

B7 0D A5 8A F6 03 FC 66 D3 FC 08 2D CC B5 73 59

7B 89 DC 33 6E 66 5A 5E 52 37 B4 62 D1 92 59 35

14 8B 45 AC 59 B2 4D 24 A2 98 94 68 42 72 9F 3A

68 E2 6B 8B 9E 22 2D F4 98 4E 9A C6 AF B3 E4 A0

AB 3C 28 BF 23 E1 D7 72 A4 F2 10 53 67 AE 77 AF

51

RSA Public Key = 01 00 01

Authority Information Access = Access Method=1.3.6.1.5.5.7.48.1

Access Location.URI=http://ocsp.verisign.com

Basic constraints = 30 00

CRL Distribution Points = Name.URI=http://crl.verisign.com/tss-ca.crl

Reason=Unspecified, Key Compromise, CA Compromise, Affiliation Changed, Superseded, Cessation Of Operation, Certificate Hold, Remove From CRL, Privilege Withdrawn, AA Compromise

Extended key usage = Time stamping, Custom Usage : 0

Key usage = Digital signature

Subject Alternative Name = Directory Name=Common Name = TSA1-3

Subject Key Identifier = B4 B7 F1 89 49 26 60 E7 65 EA 73 AE DC D3 38 CD BF 57 92 6F

//****************************************************************************

Get SignTool.exe http://www.lindersoft.com/forums/showthread.php?t=19327

I lack the experience of following through with this but here is some information on application digital sigining.

Howto: Add a Digital Signature to Executables

The idea was to create an Autoit EXE that matches the updater but hollow only used to launch the installers with command line switches for silent install. This would require probally 3-4 lines of code not counting the file res information. Compile then sign with a copied sig that way the extemely small executable could be file installed into the main script. If anyone wants to go that route. :)

How can I extract the contents of the installer without using a full 7zip installation?

Edited by Decipher

Spoiler

censored.jpg

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

How can I extract the contents of the installer without using a full 7zip installation?

http://www.rarlab.com/rar/unrar38b.zip

A command line dos based standalone extract tool which could replace the need for 7zip which if used in the context of "unrar.exe -bla bla variables" may meet your needs; however, most of what youve done is above my head as im too far removed from this stuff! :)

Edited by Paulypaul

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

http://www.rarlab.com/rar/unrar38b.zip

A command line dos based standalone extract tool which could replace the need for 7zip which if used in the context of "unrar.exe -bla bla variables" may meet your needs; however, most of what youve done is above my head as im too far removed from this stuff! :)

Thanks but no dice.

C:DOCUME~1OwnerMYDOCU~1DOWNLO~1unrar38b>unrar e uTorrentPortable_3.2.0.2763

6_online.paf.exe

UNRAR 3.80 freeware Copyright © 1993-2008 Alexander Roshal

Cannot open uTorrentPortable_3.2.0.27636_online.paf.exe

Permission denied (EACCES)

No files to extract

7za.exe the standalone CLI based version of 7Zip dosen't work either.

Edited by Decipher

Spoiler

censored.jpg

 

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

@ storme

I see that you are interested in creating a sourceforge program downloader. Is there currently a forum page for this? I'll help if needed. What about a script that can download from multiple locations such as filehippo, sourceforge, download.com, softpedia, dev managed torrent database using utorrent portable and other depending on the mirrors selected by users? I think that it would be a worthy project. :)

*Edit I just finished reading your topic. Great Work! I'll finish the PA download functions if they suit your universal downloader.

I'm leaving this topic there is a very similiar topic here:

Edited by Decipher

Spoiler

censored.jpg

 

Share this post


Link to post
Share on other sites

I've thought of a universal downloader but then I look at the maintenance side get scared an run away sceaming. :)

The fileHippo downloader has had a few updates when the web site has changed.

BUT it looks like I may have to bite the bullet and collect all the various pieces together into one thread.

Thanks for the PortableApps download... I dont' like it of course because it's better than mine ::) THANKS!

I'll start a new thread for a MultiSiteDownloader...First thoughts are A very small UDF with one "func" that then includes the other UDFs for the particular site download. That way if someone only uses one site they can avoid having to have all that extra code.

Anyway enough if this here I'll start a new thread.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • bawldiggle
      By bawldiggle
      How do I sync portable SciTE4AutoIt3 with portable AutoIt3 ?
      I have spent hours trawling through FAQs, this forum, and general searches on the web, without any luck
      I would prefer to use portable setup for AutoIt and SciTE etc.  I have downloaded portable ZIP but have not extracted it in case the order of extracting is critical.
      Thank you
    • AlHazred
      By AlHazred
      Just like it says in the title. A scripter from my company gave me a script to make it run, but he's not around anymore, and my drive finally failed with no working backup.
      I run PortableRoboForm (http://www.roboform.com/for-usb-roboform2go-windows) version 6 from a USB drive to automate password management for hundreds of accounts with different passwords.RoboForm lets me do this, and they even have a Portable version, but it's not that portable and I'd like to use it inside a PortableApps (http://portableapps.com/) launcher.
      I'd like to create a script to go to the root of the USB drive and run "PortableRoboForm.exe". PortableApps only sees executables in subdirectories of the \PortableApps folder of the USB drive. RoboForm2Go only installs and executes in the root directory of the USB drive.
      I tried using the fantastic little _GetFileDrive function, but I keep getting an error indicating it's trying to run the file in the subdirectory so obviously I'm not using _GetFileDrive right. Any help for a newbie would be appreciated.
      ; Change the working directory to the root of this file. FileChangeDir(_GetFileDrive(@ScriptDir)) ; Run the PortableRoboForm executable. Run(PortableRoboForm.exe,"") ; Get the drive letter of a filepath. Idea from _PathSplit. Func _GetFileDrive($sFilePath) Return StringLeft($sFilePath, StringInStr($sFilePath, ":", 2, 1) + 1) EndFunc ;==>_GetFileDrive EDIT: Nevermind, found the option to set it up to run from the PortableApps menu.
    • Danyfirex
      By Danyfirex
      Well an Implementation of IPortableDeviceManager Interface to get all Portable Device conected to our pc.
       
      #include <Array.au3> #include <WinAPICom.au3> Opt("MustDeclareVars", 1) Global Const $sCLSID_PortableDeviceManager = "{0af10cec-2ecd-4b92-9581-34f6ae0637f3}" Global Const $sIID_IPortableDeviceManager = "{a1567595-4c2f-4574-a6fa-ecef917b9a40}" Global Const $sTagIPortableDeviceManager = "GetDevices hresult(ptr;dword*); RefreshDeviceList hresult(); " & _ "GetDeviceFriendlyName hresult(wstr;wstr;dword*); GetDeviceDescription hresult(wstr;wstr;dword*); " & _ "GetDeviceManufacturer hresult(wstr;wstr;dword*); GetDeviceManufacturer hresult(wstr;wstr;ptr;dword*dword*); " & _ "GetPrivateDevices hresult(ptr;dword*)" Global Enum $eDevID, $eDevName, $eDevManufacturer, $eDevDescription Local $aPnPDevices = GetPortableDevices() If IsArray($aPnPDevices) Then _ArrayDisplay($aPnPDevices) ;~ Success: Return 0 ;~ Failure: Return 2DArray [n][4] |;[n][0]$eDevID, [n][1]$eDevName, [n][2]$eDevManufacturer,[n][3] $eDevDescription Func GetPortableDevices() Local $aDevicesInfo[0][0] ;[n][0]$eDevID, [n][1]$eDevName, [n][2]$eDevManufacturer,[n][3] $eDevDescription Local $oPortableDeviceManager = 0 Local $SizeofArray = 0 Local $hr = 0x80004005 ;E_Fail Just to Initialized <0 Local $taPnPDeviceIDs = 0 Local $tName = 0 $oPortableDeviceManager = ObjCreateInterface($sCLSID_PortableDeviceManager, $sIID_IPortableDeviceManager, $sTagIPortableDeviceManager) If Not IsObj($oPortableDeviceManager) Then Return 0 If FAILED($oPortableDeviceManager.GetDevices(Null, $SizeofArray)) Then Return 0 If $SizeofArray < 1 Then Return 0 $taPnPDeviceIDs = DllStructCreate("ptr[" & $SizeofArray & "]") If FAILED($oPortableDeviceManager.GetDevices(DllStructGetPtr($taPnPDeviceIDs), $SizeofArray)) Then Return 0 ReDim $aDevicesInfo[$SizeofArray][4] For $i = 0 To $SizeofArray - 1 $tName = DllStructCreate("wchar[512]", DllStructGetData($taPnPDeviceIDs, 1, $i + 1)) $aDevicesInfo[$i][$eDevID] = DllStructGetData($tName, 1) $aDevicesInfo[$i][$eDevName] = _GetFriendlyName($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $aDevicesInfo[$i][$eDevManufacturer] = _GetDeviceManufacturer($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $aDevicesInfo[$i][$eDevDescription] = _GetDeviceDescription($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $tName = 0 _WinAPI_CoTaskMemFree(DllStructGetData($taPnPDeviceIDs, 1, $i + 1)) Next Return $aDevicesInfo EndFunc ;==>GetPortableDevices Func _GetDeviceManufacturer($oInterface, $PnPDeviceID) Local $sString = "" $oInterface.GetDeviceManufacturer($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetDeviceManufacturer Func _GetDeviceDescription($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceDescription($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetDeviceDescription Func _GetFriendlyName($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceFriendlyName($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetFriendlyName Func _GetProperty($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceFriendlyName($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetProperty Func FAILED($hr) Return ($hr < 0) EndFunc ;==>FAILED  
      Saludos
    • FusionAura
      By FusionAura
      Hi,
      I am trying to programatically use Autoit to migrate uTorrent files. I need to send the key Ctrl + D to uTorrent, and then fill in a dialogue  box on the torrent location and the file location.
       
      However, I am stuck after opening uTorrent and trying to send the Ctrl D Command.
      This may not be the best but.
      Run("C:\Users\User\AppData\Roaming\uTorrent\uTorrent.exe")
      WinWaitActive("µTorrent 3.4.3  (build 40298) [32-bit]")
      ControlSend("µTorrent 3.4.3  (build 40298) [32-bit]", "", "", Send("^d"))
       
      That's the current code. I've tested this back with notepad to see if the code is working fine and it is, which make me struggle to understand why it wouldn't work for uTorrent. Could anybody help out please?
    • zelles
      By zelles
      AutoIt Portable Workstation
      AIP allows you to carry a light AutoIt script editor and compiler with you to use on the fly. This program can run x86 and x64 scripts or compile them to EXE. When the program is launched, it will create a temp work folder in the script directory. Once the program is closed this folder will be automatically deleted. When you compile a script it will output in the the script directory in a folder named "compiled".

      Current version: 0.0.2
      Version 0.0.2 updates:
      Added more options to the comiler
      Planned Updates:
      Script editor font appearance. Automaticly color coded tags in editor Built In Includes:
      APIComConstants.au3 APIConstants.au3 APIDiagConstants.au3 APIDlgConstants.au3 APIErrorsConstants.au3 APIFilesConstants.au3 APIGdiConstants.au3 APILocaleConstants.au3 APIMiscConstants.au3 APIProcConstants.au3 APIRegConstants.au3 APIResConstants.au3 APIShellExConstants.au3 APIShPathConstants.au3 APISysConstants.au3 APIThemeConstants.au3 Array.au3 AutoItConstants.au3 AVIConstants.au3 BorderConstants.au3 ButtonConstants.au3 Clipboard.au3 Color.au3 ColorConstants.au3 ComboConstants.au3 Constants.au3 Crypt.au3 Date.au3 DateTimeConstants.au3 Debug.au3 DirConstants.au3 EditConstants.au3 EventLog.au3 Excel.au3 ExcelConstants.au3 File.au3 FileConstants.au3 FontConstants.au3 FrameConstants.au3 FTPEx.au3 GDIPlus.au3 GDIPlusConstants.au3 GuiAVI.au3 GuiButton.au3 GuiComboBox.au3 GuiComboBoxEx.au3 GUIConstants.au3 GUIConstantsEx.au3 GuiDateTimePicker.au3 GuiEdit.au3 GuiHeader.au3 GuiImageList.au3 GuiIPAddress.au3 GuiListBox.au3 GuiListView.au3 GuiMenu.au3 GuiMonthCal.au3 GuiReBar.au3 GuiRichEdit.au3 GuiScrollBars.au3 GuiSlider.au3 GuiStatusBar.au3 GuiTab.au3 GuiToolbar.au3 GuiToolTip.au3 GuiTreeView.au3 HeaderConstants.au3 IE.au3 ImageListConstants.au3 Inet.au3 InetConstants.au3 IPAddressConstants.au3 ListBoxConstants.au3 ListViewConstants.au3 Math.au3 Memory.au3 MemoryConstants.au3 MenuConstants.au3 Misc.au3 MsgBoxConstants.au3 NamedPipes.au3 NetShare.au3 NTSTATUSConstants.au3 Process.au3 ProcessConstants.au3 ProgressConstants.au3 RebarConstants.au3 RichEditConstants.au3 ScreenCapture.au3 ScrollBarConstants.au3 ScrollBarsConstants.au3 Security.au3 SecurityConstants.au3 SendMessage.au3 SliderConstants.au3 Sound.au3 SQLite.au3 SQLite.dll.au3 StaticConstants.au3 StatusBarConstants.au3 String.au3 StringConstants.au3 StructureConstants.au3 TabConstants.au3 Timers.au3 ToolbarConstants.au3 ToolTipConstants.au3 TrayConstants.au3 TreeViewConstants.au3 UDFGlobalID.au3 UpDownConstants.au3 Visa.au3 WinAPI.au3 WinAPICom.au3 WinAPIConstants.au3 WinAPIDiag.au3 WinAPIDlg.au3 WinAPIError.au3 WinAPIEx.au3 WinAPIFiles.au3 WinAPIGdi.au3 WinAPIInternals.au3 WinAPIlangConstants.au3 WinAPILocale.au3 WinAPIMisc.au3 WinAPIProc.au3 WinAPIReg.au3 WinAPIRes.au3 WinAPIShellEx.au3 WinAPIShPath.au3 WinAPISys.au3 WinAPIsysinfoConstants.au3 WinAPITheme.au3 WinAPIvkeysConstants.au3 WindowsConstants.au3 WinNet.au3 Word.au3 WordConstants.au3 Source Code:
      #NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=..\AIP\Icon.ico #AutoIt3Wrapper_Res_Description=Compile your AutoIt scripts on the fly! #AutoIt3Wrapper_Res_Fileversion=0.0.2.0 #AutoIt3Wrapper_Res_LegalCopyright=Copyright 2014 zelles #AutoIt3Wrapper_Res_Language=1033 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <File.au3> #include <GUIConstantsEx.au3> #include <Misc.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region Begin Startup Settings _Singleton("AutoItPortableByzelles") Opt("GUIOnEventMode", 1) Opt("TrayMenuMode", 3) #EndRegion End Startup Settings #Region Begin Startup Globals Global $DIR_complier_output = @ScriptDir & "\compiled" Global $DIR_TEMP = @ScriptDir & "\temp_appdata" Global $DIR_includes = $DIR_TEMP & "\includes" Global $FILE_icon = $DIR_TEMP & "\Icon.ico" Global $FILE_TEMP = $DIR_includes & "\aip_temp.au3" Global $FILE_TEMP_EXE = $DIR_TEMP & "\aip_temp.exe" Global $IMG_Splash = $DIR_TEMP & "\splash.gif" Global $Last_Opened = "AIPScript.au3" #EndRegion End Startup Globals #Region Begin Startup Functions GUI_Splash() Create_Temp_Workstation() GUIDelete($GUI_Splash) GUI_Workstation() #EndRegion End Startup Functions #Region Begin Idle Loop To Keep Program Alive While 1     Sleep(100) WEnd #EndRegion End Idle Loop To Keep Program Alive #Region Begin Splash GUI Creation Func GUI_Splash()     If Not FileExists($DIR_TEMP) Then DirCreate($DIR_TEMP)     FileInstall("C:\AIP\splash.gif", $DIR_TEMP & "\splash.gif", 0)     Global $GUI_Splash = GUICreate("Starting AutoIt Portable", 401, 257, 192, 124)     GUISetBkColor(0xFFFFFF)     Global $splash_image = GUICtrlCreatePic($IMG_Splash, 0, 0, 400, 250)     GUISetOnEvent($GUI_EVENT_MINIMIZE, "Close_Spash", $GUI_Splash)     GUISetOnEvent($GUI_EVENT_CLOSE, "Close_Spash", $GUI_Splash)     GUISetState(@SW_SHOW) EndFunc #EndRegion End Splash GUI Creation #Region Begin Workstation GUI Creation Func GUI_Workstation()     Global $GUI_Workstation = GUICreate("AutoIt Portable Workstation", 701, 431, 174, 115)     Global $File_Menu_File = GUICtrlCreateMenu("&File")     Global $File_Menu_New = GUICtrlCreateMenuItem("New File", $File_Menu_File)     Global $File_Menu_Open = GUICtrlCreateMenuItem("Open File", $File_Menu_File)     Global $File_Menu_Save = GUICtrlCreateMenuItem("Save File", $File_Menu_File)     Global $File_Menu_Exit = GUICtrlCreateMenuItem("Exit", $File_Menu_File)     Global $File_Menu_Options = GUICtrlCreateMenu("&Script Options")     Global $File_Menu_Runx86 = GUICtrlCreateMenuItem("Run x86", $File_Menu_Options)     Global $File_Menu_Runx64 = GUICtrlCreateMenuItem("Run x64", $File_Menu_Options)     Global $File_Menu_Compiler = GUICtrlCreateMenuItem("Run Compiler", $File_Menu_Options)     Global $File_Menu_Help = GUICtrlCreateMenu("&Help")     Global $File_Menu_About = GUICtrlCreateMenuItem("About", $File_Menu_Help)     Global $GUI_Workstation_WorkArea = GUICtrlCreateEdit('MsgBox(0, "Welcome Note:", "Thank you for using AutoIt Portable!")', 0, 0, 700, 409, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))     GUICtrlSetOnEvent($File_Menu_New, "GUI_File_New")     GUICtrlSetOnEvent($File_Menu_Open, "GUI_File_Open")     GUICtrlSetOnEvent($File_Menu_Save, "GUI_File_Save")     GUICtrlSetOnEvent($File_Menu_Exit, "Close_Workstation")     GUICtrlSetOnEvent($File_Menu_Runx86, "GUI_Run_x86")     GUICtrlSetOnEvent($File_Menu_Runx64, "GUI_Run_x64")     GUICtrlSetOnEvent($File_Menu_Compiler, "GUI_Compiler")     GUICtrlSetOnEvent($File_Menu_About, "GUI_About")     GUISetOnEvent($GUI_EVENT_CLOSE, "Close_Workstation", $GUI_Workstation)     GUISetState(@SW_SHOW, $GUI_Workstation) EndFunc #EndRegion End Workstation GUI Creation #Region Begin Compiler GUI Creation Func GUI_Compiler()     Global $GUI_Compiler = GUICreate("AICompiler GUI", 234, 447, 325, 143)     Local $GUI_Compiler_Label1 = GUICtrlCreateLabel("App Name:", 8, 11, 57, 17)     Local $GUI_Compiler_Label2 = GUICtrlCreateLabel("App Icon:", 8, 35, 50, 17)     Local $GUI_Compiler_Label3 = GUICtrlCreateLabel("Product Name:", 8, 59, 75, 17)     Local $GUI_Compiler_Label4 = GUICtrlCreateLabel("Company Name:", 8, 83, 82, 17)     Local $GUI_Compiler_Label5 = GUICtrlCreateLabel("Copyright:", 8, 107, 51, 17)     Local $GUI_Compiler_Label6 = GUICtrlCreateLabel("Trademarks:", 8, 131, 63, 17)     Local $GUI_Compiler_Label7 = GUICtrlCreateLabel("File Version:", 8, 155, 61, 17)     Local $GUI_Compiler_Label8 = GUICtrlCreateLabel("Product Version:", 8, 179, 82, 17)     Local $GUI_Compiler_Label9 = GUICtrlCreateLabel("Description:", 8, 203, 60, 17)     Local $GUI_Compiler_Label10 = GUICtrlCreateLabel("Comment:", 8, 227, 51, 17)     Local $GUI_Compiler_Label11 = GUICtrlCreateLabel("Ignore Directives:", 8, 251, 87, 17)     Local $GUI_Compiler_Label12 = GUICtrlCreateLabel("Compile For:", 8, 275, 62, 17)     Local $GUI_Compiler_Label13 = GUICtrlCreateLabel("Compression:", 8, 299, 67, 17)     Local $GUI_Compiler_Label14 = GUICtrlCreateLabel("Comp. w/ UPX:", 8, 323, 78, 17)     Local $GUI_Compiler_Label15 = GUICtrlCreateLabel("Execution Level:", 8, 347, 83, 17)     Local $GUI_Compiler_Label16 = GUICtrlCreateLabel("Compatibility:", 8, 371, 65, 17)     Local $GUI_Compiler_Label17 = GUICtrlCreateLabel("App Type:", 8, 395, 53, 17)     Global $GUI_Compiler_OutputFile = GUICtrlCreateInput("My App", 72, 8, 153, 21)     Global $GUI_Compiler_IconFile = GUICtrlCreateInput($FILE_icon, 72, 32, 105, 21)     Global $GUI_Compiler_LoadIcon_Button = GUICtrlCreateButton("Load", 184, 32, 43, 21)     Global $GUI_Compiler_ProductName = GUICtrlCreateInput("", 88, 56, 137, 21)     Global $GUI_Compiler_CompanyName = GUICtrlCreateInput("", 88, 80, 137, 21)     Global $GUI_Compiler_Copyright = GUICtrlCreateInput("", 72, 104, 153, 21)     Global $GUI_Compiler_Trademarks = GUICtrlCreateInput("", 72, 128, 153, 21)     Global $GUI_Compiler_FileVersion = GUICtrlCreateInput("", 88, 152, 137, 21)     Global $GUI_Compiler_ProductVersion = GUICtrlCreateInput("", 88, 176, 137, 21)     Global $GUI_Compiler_Description = GUICtrlCreateInput("", 72, 200, 153, 21)     Global $GUI_Compiler_Comment = GUICtrlCreateInput("", 72, 224, 153, 21)     Global $GUI_Compiler_IgnoreDirectives = GUICtrlCreateCheckbox("Ignore", 120, 248, 65, 17)     Global $GUI_Compiler_x86 = GUICtrlCreateCheckbox("x86", 120, 273, 49, 17)     GUICtrlSetState(-1, $GUI_CHECKED)     Global $GUI_Compiler_x64 = GUICtrlCreateCheckbox("x64", 176, 273, 49, 17)     Global $GUI_Compiler_Compression = GUICtrlCreateCombo("None", 88, 296, 137, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))     GUICtrlSetData($GUI_Compiler_Compression, "Low|Medium|High|Highest", "None")     Global $GUI_Compiler_UPXCompression = GUICtrlCreateCombo("Dont Compress", 88, 320, 137, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))     GUICtrlSetData($GUI_Compiler_UPXCompression, "Compress", "Dont Compress")     Global $GUI_Compiler_ExecutionLevel = GUICtrlCreateCombo("None", 88, 344, 137, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))     GUICtrlSetData($GUI_Compiler_ExecutionLevel, "AsInvoker|Highest Avail|Require Admin", "None")     Global $GUI_Compiler_Compatibility = GUICtrlCreateCombo("All", 88, 368, 137, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))     GUICtrlSetData($GUI_Compiler_Compatibility, "Windows Vista|Windows 7|Windows 8", "All")     Global $GUI_Compiler_AppType = GUICtrlCreateCombo("Default", 88, 392, 137, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))     GUICtrlSetData($GUI_Compiler_AppType, "GUI|Console", "Default")     Global $GUI_Compiler_Compile_Button = GUICtrlCreateButton("Compile", 136, 416, 91, 25)     GUICtrlSetOnEvent($GUI_Compiler_LoadIcon_Button, "Compiler")     GUICtrlSetOnEvent($GUI_Compiler_Compile_Button, "Compiler")     GUISetOnEvent($GUI_EVENT_CLOSE, "Close_Compiler", $GUI_Compiler)     GUISetState(@SW_SHOW, $GUI_Compiler) EndFunc #EndRegion End Compiler GUI Creation #Region Begin Splash GUI Events Func Close_Spash()     TrayTip("AIP Response", "Please wait for AIP to finish initializing", 6) EndFunc #EndRegion End Splash GUI Creation #Region Begin Workstation GUI Events Func GUI_File_New()     GUICtrlSetData($GUI_Workstation_WorkArea, "") EndFunc Func GUI_File_Open()     Local $f_open_script = FileOpenDialog("Open AutoIt Script", @ScriptDir, "au3 (*.au3)|All (*.*)", 1, $Last_Opened, $GUI_Workstation)     $Last_Opened = StringTrimLeft($f_open_script, StringInStr($f_open_script, "\", $STR_NOCASESENSE, -1))     Local $f_open_script_Script = FileRead($f_open_script)     GUICtrlSetData($GUI_Workstation_WorkArea, $f_open_script_Script) EndFunc Func GUI_File_Save()     Local $f_save_script = FileSaveDialog("Save AutoIt Script", @ScriptDir, "au3 (*.au3)|All (*.*)", 0, $Last_Opened, $GUI_Workstation)     $Last_Opened = StringTrimLeft($f_save_script, StringInStr($f_save_script, "\", $STR_NOCASESENSE, -1))     Local $f_script = GUICtrlRead($GUI_Workstation_WorkArea)     If FileExists($f_save_script) Then FileDelete($f_save_script)     _FileCreate($f_save_script)     Local $f_save_script_Open = FileOpen($f_save_script, $FO_APPEND)     FileWrite($f_save_script_Open, $f_script)     FileClose($f_save_script_Open) EndFunc Func GUI_Run_x86()     Local $f_script = GUICtrlRead($GUI_Workstation_WorkArea)     If FileExists($FILE_TEMP_EXE) Then FileDelete($FILE_TEMP_EXE)     If FileExists($FILE_TEMP) Then FileDelete($FILE_TEMP)     _FileCreate($FILE_TEMP)     Local $FILE_TEMP_Open = FileOpen($FILE_TEMP, $FO_APPEND)     FileWrite($FILE_TEMP_Open, $f_script)     FileClose($FILE_TEMP_Open)     RunWait($DIR_TEMP & '/Aut2exe.exe /in "' & $FILE_TEMP & '" /out "' & $FILE_TEMP_EXE & '" /icon "' & $FILE_icon & '" /comp 0 /nopack /x86')     FileDelete($FILE_TEMP)     Run($FILE_TEMP_EXE) EndFunc Func GUI_Run_x64()     Local $f_script = GUICtrlRead($GUI_Workstation_WorkArea)     If FileExists($FILE_TEMP_EXE) Then FileDelete($FILE_TEMP_EXE)     If FileExists($FILE_TEMP) Then FileDelete($FILE_TEMP)     _FileCreate($FILE_TEMP)     Local $FILE_TEMP_Open = FileOpen($FILE_TEMP, $FO_APPEND)     FileWrite($FILE_TEMP_Open, $f_script)     FileClose($FILE_TEMP_Open)     RunWait($DIR_TEMP & '/Aut2exe.exe /in "' & $FILE_TEMP & '" /out "' & $FILE_TEMP_EXE & '" /icon "' & $FILE_icon & '" /comp 0 /nopack /x64')     FileDelete($FILE_TEMP)     Run($FILE_TEMP_EXE) EndFunc Func GUI_About()     MsgBox(0, "About AIP", "AutoIt Portable was made by zelles to help people who need AutoIt on the fly." & @CRLF & "Currently running version: 0.0.1") EndFunc Func Close_Workstation()     GUIDelete($GUI_Workstation)     If FileExists($DIR_TEMP) Then DirRemove($DIR_TEMP, 1)     Exit EndFunc #EndRegion End Workstation GUI Events #Region Begin Compiler GUI Events Func Compiler($f_data)     ; Unintergrated commands: /ansi /unicode /originalfilename "" /internalname ""     If Not FileExists($DIR_complier_output) Then DirCreate($DIR_complier_output)     Local $f_script = GUICtrlRead($GUI_Workstation_WorkArea)     If FileExists($FILE_TEMP) Then FileDelete($FILE_TEMP)     _FileCreate($FILE_TEMP)     Local $FILE_TEMP_Open = FileOpen($FILE_TEMP, $FO_APPEND)     FileWrite($FILE_TEMP_Open, $f_script)     FileClose($FILE_TEMP_Open)     Local $Compiler_Script_x86 = $DIR_TEMP & '/Aut2exe.exe'     Local $Compiler_Script_x64 = $DIR_TEMP & '/Aut2exe.exe'     $Compiler_Script_x86 &= ' /in "' & $FILE_TEMP & '"'     $Compiler_Script_x64 &= ' /in "' & $FILE_TEMP & '"'     Local $f_OutputFile = GUICtrlRead($GUI_Compiler_OutputFile)     $Compiler_Script_x86 &= ' /out "' & $DIR_complier_output & '\' & $f_OutputFile & ' x86.exe"'     $Compiler_Script_x64 &= ' /out "' & $DIR_complier_output & '\' & $f_OutputFile & ' x64.exe"'     Switch GUICtrlRead($GUI_Compiler_IconFile)         Case ""             $Compiler_Script_x86 &= ' /icon "' & $FILE_icon & '"'             $Compiler_Script_x64 &= ' /icon "' & $FILE_icon & '"'         Case Else             If FileExists(GUICtrlRead($GUI_Compiler_IconFile)) Then                 $Compiler_Script_x86 &= ' /icon "' & GUICtrlRead($GUI_Compiler_IconFile) & '"'                 $Compiler_Script_x64 &= ' /icon "' & GUICtrlRead($GUI_Compiler_IconFile) & '"'             Else                 $Compiler_Script_x86 &= ' /icon "' & $FILE_icon & '"'                 $Compiler_Script_x64 &= ' /icon "' & $FILE_icon & '"'             EndIf     EndSwitch     $Compiler_Script_x86 &= ' /x86'     $Compiler_Script_x64 &= ' /x64'     Switch GUICtrlRead($GUI_Compiler_Compression)         Case "None"             $Compiler_Script_x86 &= ' /comp 0'             $Compiler_Script_x64 &= ' /comp 0'         Case "Low"             $Compiler_Script_x86 &= ' /comp 1'             $Compiler_Script_x64 &= ' /comp 1'         Case "Medium"             $Compiler_Script_x86 &= ' /comp 2'             $Compiler_Script_x64 &= ' /comp 2'         Case "High"             $Compiler_Script_x86 &= ' /comp 3'             $Compiler_Script_x64 &= ' /comp 3'         Case "Highest"             $Compiler_Script_x86 &= ' /comp 4'             $Compiler_Script_x64 &= ' /comp 4'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_IgnoreDirectives)         Case $GUI_CHECKED             $Compiler_Script_x86 &= ' /ignoredirectives'             $Compiler_Script_x64 &= ' /ignoredirectives'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_UPXCompression)         Case "Dont Compress"             $Compiler_Script_x86 &= ' /nopack'             $Compiler_Script_x64 &= ' /nopack'         Case "Compress"             $Compiler_Script_x86 &= ' /pack'             $Compiler_Script_x64 &= ' /pack'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_AppType)         Case "GUI"             $Compiler_Script_x86 &= ' /gui'             $Compiler_Script_x64 &= ' /gui'         Case "Console"             $Compiler_Script_x86 &= ' /console'             $Compiler_Script_x64 &= ' /console'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_ExecutionLevel)         Case "None"             $Compiler_Script_x86 &= ' /execlevel none'             $Compiler_Script_x64 &= ' /execlevel none'         Case "AsInvoker"             $Compiler_Script_x86 &= ' /execlevel asinvoker'             $Compiler_Script_x64 &= ' /execlevel asinvoker'         Case "Highest Avail"             $Compiler_Script_x86 &= ' /execlevel highestavailable'             $Compiler_Script_x64 &= ' /execlevel highestavailable'         Case "Require Admin"             $Compiler_Script_x86 &= ' /execlevel requireadministrator'             $Compiler_Script_x64 &= ' /execlevel requireadministrator'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_Compatibility)         Case "Windows Vista"             $Compiler_Script_x86 &= ' /compatibility vista'             $Compiler_Script_x64 &= ' /compatibility vista'         Case "Windows 7"             $Compiler_Script_x86 &= ' /compatibility win7'             $Compiler_Script_x64 &= ' /compatibility win7'         Case "Windows 8"             $Compiler_Script_x86 &= ' /compatibility win8'             $Compiler_Script_x64 &= ' /compatibility win8'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_Comment)         Case ""             $Compiler_Script_x86 &= ' /comments "Compiled with AutoIt Portable by zelles."'             $Compiler_Script_x64 &= ' /comments "Compiled with AutoIt Portable by zelles."'         Case Else             $Compiler_Script_x86 &= ' /comments "' & GUICtrlRead($GUI_Compiler_Comment) & '"'             $Compiler_Script_x64 &= ' /comments "' & GUICtrlRead($GUI_Compiler_Comment) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_CompanyName)         Case ""             $Compiler_Script_x86 &= ' /companyname "None"'             $Compiler_Script_x64 &= ' /companyname "None"'         Case Else             $Compiler_Script_x86 &= ' /companyname "' & GUICtrlRead($GUI_Compiler_CompanyName) & '"'             $Compiler_Script_x64 &= ' /companyname "' & GUICtrlRead($GUI_Compiler_CompanyName) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_Description)         Case ""             $Compiler_Script_x86 &= ' /filedescription "None"'             $Compiler_Script_x64 &= ' /filedescription "None"'         Case Else             $Compiler_Script_x86 &= ' /filedescription "' & GUICtrlRead($GUI_Compiler_Description) & '"'             $Compiler_Script_x64 &= ' /filedescription "' & GUICtrlRead($GUI_Compiler_Description) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_Copyright)         Case ""             $Compiler_Script_x86 &= ' /legalcopyright ' & @YEAR             $Compiler_Script_x64 &= ' /legalcopyright ' & @YEAR         Case Else             $Compiler_Script_x86 &= ' /legalcopyright "' & GUICtrlRead($GUI_Compiler_Copyright) & '"'             $Compiler_Script_x64 &= ' /legalcopyright "' & GUICtrlRead($GUI_Compiler_Copyright) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_Trademarks)         Case ""             $nothing = 0         Case Else             $Compiler_Script_x86 &= ' /legaltrademarks "' & GUICtrlRead($GUI_Compiler_Trademarks) & '"'             $Compiler_Script_x64 &= ' /legaltrademarks "' & GUICtrlRead($GUI_Compiler_Trademarks) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_ProductName)         Case ""             $nothing = 0         Case Else             $Compiler_Script_x86 &= ' /productname "' & GUICtrlRead($GUI_Compiler_ProductName) & '"'             $Compiler_Script_x64 &= ' /productname "' & GUICtrlRead($GUI_Compiler_ProductName) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_FileVersion)         Case ""             $Compiler_Script_x86 &= ' /fileversion "0.0.0.1"'             $Compiler_Script_x64 &= ' /fileversion "0.0.0.1"'         Case Else             $Compiler_Script_x86 &= ' /fileversion "' & GUICtrlRead($GUI_Compiler_FileVersion) & '"'             $Compiler_Script_x64 &= ' /fileversion "' & GUICtrlRead($GUI_Compiler_FileVersion) & '"'     EndSwitch     Switch GUICtrlRead($GUI_Compiler_ProductVersion)         Case ""             $Compiler_Script_x86 &= ' /productversion "3.3.12.0"'             $Compiler_Script_x64 &= ' /productversion "3.3.12.0"'         Case Else             $Compiler_Script_x86 &= ' /productversion "' & GUICtrlRead($GUI_Compiler_ProductVersion) & '"'             $Compiler_Script_x64 &= ' /productversion "' & GUICtrlRead($GUI_Compiler_ProductVersion) & '"'     EndSwitch     If GUICtrlRead($GUI_Compiler_x86) = $GUI_CHECKED Then         RunWait($Compiler_Script_x86)         ;RunWait($DIR_TEMP & '/Aut2exe.exe /in "' & $FILE_TEMP & '" /out "' & $DIR_complier_output & '\' & $f_OutputFile & ' x86.exe" /icon "' & $FILE_icon & '"' & $f_Compression & $f_UPXCompression & ' /x86')         ;RunWait($DIR_TEMP & '/Aut2exe.exe /in "' & $FILE_TEMP & '" /out "' & $DIR_complier_output & '\' & $f_OutputFile & ' x86.exe"' & $f_IconFile & $f_Compression & $f_IgnoreDirectives & $f_UPXCompression & ' /x86'`& $f_AppType & $f_ExecutionLevel & $f_Compatibility & $f_Comment & $f_CompanyName & $f_Description & $f_Copyright & $f_Trademarks & $f_ProductName & $f_FileVersion & $f_ProductVersion)     EndIf     If GUICtrlRead($GUI_Compiler_x64) = $GUI_CHECKED Then         RunWait($Compiler_Script_x64)         ;RunWait($DIR_TEMP & '/Aut2exe.exe /in "' & $FILE_TEMP & '" /out "' & $DIR_complier_output & '\' & $f_OutputFile & ' x64.exe"' & $f_IconFile & $f_Compression & $f_IgnoreDirectives & $f_UPXCompression & ' /x64'`& $f_AppType & $f_ExecutionLevel & $f_Compatibility & $f_Comment & $f_CompanyName & $f_Description & $f_Copyright & $f_Trademarks & $f_ProductName & $f_FileVersion & $f_ProductVersion)     EndIf     FileDelete($FILE_TEMP)     GUIDelete($GUI_Compiler)     MsgBox(0, "AIP Response", "The compiler is finished. Check script directory for files.") EndFunc Func Close_Compiler()     GUIDelete($GUI_Compiler) EndFunc #EndRegion End Compiler GUI Events #Region Begin Temp Appdata Setup Func Create_Temp_Workstation()     If Not FileExists($DIR_TEMP) Then DirCreate($DIR_TEMP)     If Not FileExists($DIR_includes) Then DirCreate($DIR_includes)     FileInstall("C:\AIP\Icon.ico", $DIR_TEMP & "\Icon.ico", 0)     FileInstall("C:\AIP\Aut2exe.exe", $DIR_TEMP & "\Aut2exe.exe", 0)     FileInstall("C:\AIP\upx.exe", $DIR_TEMP & "\upx.exe", 0)     FileInstall("C:\AIP\includes\APIComConstants.au3", $DIR_includes & "\APIComConstants.au3", 0)     FileInstall("C:\AIP\includes\APIConstants.au3", $DIR_includes & "\APIConstants.au3", 0)     FileInstall("C:\AIP\includes\APIDiagConstants.au3", $DIR_includes & "\APIDiagConstants.au3", 0)     FileInstall("C:\AIP\includes\APIDlgConstants.au3", $DIR_includes & "\APIDlgConstants.au3", 0)     FileInstall("C:\AIP\includes\APIErrorsConstants.au3", $DIR_includes & "\APIErrorsConstants.au3", 0)     FileInstall("C:\AIP\includes\APIFilesConstants.au3", $DIR_includes & "\APIFilesConstants.au3", 0)     FileInstall("C:\AIP\includes\APIGdiConstants.au3", $DIR_includes & "\APIGdiConstants.au3", 0)     FileInstall("C:\AIP\includes\APILocaleConstants.au3", $DIR_includes & "\APILocaleConstants.au3", 0)     FileInstall("C:\AIP\includes\APIMiscConstants.au3", $DIR_includes & "\APIMiscConstants.au3", 0)     FileInstall("C:\AIP\includes\APIProcConstants.au3", $DIR_includes & "\APIProcConstants.au3", 0)     FileInstall("C:\AIP\includes\APIRegConstants.au3", $DIR_includes & "\APIRegConstants.au3", 0)     FileInstall("C:\AIP\includes\APIResConstants.au3", $DIR_includes & "\APIResConstants.au3", 0)     FileInstall("C:\AIP\includes\APIShellExConstants.au3", $DIR_includes & "\APIShellExConstants.au3", 0)     FileInstall("C:\AIP\includes\APIShPathConstants.au3", $DIR_includes & "\APIShPathConstants.au3", 0)     FileInstall("C:\AIP\includes\APISysConstants.au3", $DIR_includes & "\APISysConstants.au3", 0)     FileInstall("C:\AIP\includes\APIThemeConstants.au3", $DIR_includes & "\APIThemeConstants.au3", 0)     FileInstall("C:\AIP\includes\Array.au3", $DIR_includes & "\Array.au3", 0)     FileInstall("C:\AIP\includes\AutoItConstants.au3", $DIR_includes & "\AutoItConstants.au3", 0)     FileInstall("C:\AIP\includes\AVIConstants.au3", $DIR_includes & "\AVIConstants.au3", 0)     FileInstall("C:\AIP\includes\BorderConstants.au3", $DIR_includes & "\BorderConstants.au3", 0)     FileInstall("C:\AIP\includes\ButtonConstants.au3", $DIR_includes & "\ButtonConstants.au3", 0)     FileInstall("C:\AIP\includes\Clipboard.au3", $DIR_includes & "\Clipboard.au3", 0)     FileInstall("C:\AIP\includes\Color.au3", $DIR_includes & "\Color.au3", 0)     FileInstall("C:\AIP\includes\ColorConstants.au3", $DIR_includes & "\ColorConstants.au3", 0)     FileInstall("C:\AIP\includes\ComboConstants.au3", $DIR_includes & "\ComboConstants.au3", 0)     FileInstall("C:\AIP\includes\Constants.au3", $DIR_includes & "\Constants.au3", 0)     FileInstall("C:\AIP\includes\Crypt.au3", $DIR_includes & "\Crypt.au3", 0)     FileInstall("C:\AIP\includes\Date.au3", $DIR_includes & "\Date.au3", 0)     FileInstall("C:\AIP\includes\DateTimeConstants.au3", $DIR_includes & "\DateTimeConstants.au3", 0)     FileInstall("C:\AIP\includes\Debug.au3", $DIR_includes & "\Debug.au3", 0)     FileInstall("C:\AIP\includes\DirConstants.au3", $DIR_includes & "\DirConstants.au3", 0)     FileInstall("C:\AIP\includes\EditConstants.au3", $DIR_includes & "\EditConstants.au3", 0)     FileInstall("C:\AIP\includes\EventLog.au3", $DIR_includes & "\EventLog.au3", 0)     FileInstall("C:\AIP\includes\Excel.au3", $DIR_includes & "\Excel.au3", 0)     FileInstall("C:\AIP\includes\ExcelConstants.au3", $DIR_includes & "\ExcelConstants.au3", 0)     FileInstall("C:\AIP\includes\File.au3", $DIR_includes & "\File.au3", 0)     FileInstall("C:\AIP\includes\FileConstants.au3", $DIR_includes & "\FileConstants.au3", 0)     FileInstall("C:\AIP\includes\FontConstants.au3", $DIR_includes & "\FontConstants.au3", 0)     FileInstall("C:\AIP\includes\FrameConstants.au3", $DIR_includes & "\FrameConstants.au3", 0)     FileInstall("C:\AIP\includes\FTPEx.au3", $DIR_includes & "\FTPEx.au3", 0)     FileInstall("C:\AIP\includes\GDIPlus.au3", $DIR_includes & "\GDIPlus.au3", 0)     FileInstall("C:\AIP\includes\GDIPlusConstants.au3", $DIR_includes & "\GDIPlusConstants.au3", 0)     FileInstall("C:\AIP\includes\GuiAVI.au3", $DIR_includes & "\GuiAVI.au3", 0)     FileInstall("C:\AIP\includes\GuiButton.au3", $DIR_includes & "\GuiButton.au3", 0)     FileInstall("C:\AIP\includes\GuiComboBox.au3", $DIR_includes & "\GuiComboBox.au3", 0)     FileInstall("C:\AIP\includes\GuiComboBoxEx.au3", $DIR_includes & "\GuiComboBoxEx.au3", 0)     FileInstall("C:\AIP\includes\GUIConstants.au3", $DIR_includes & "\GUIConstants.au3", 0)     FileInstall("C:\AIP\includes\GUIConstantsEx.au3", $DIR_includes & "\GUIConstantsEx.au3", 0)     FileInstall("C:\AIP\includes\GuiDateTimePicker.au3", $DIR_includes & "\GuiDateTimePicker.au3", 0)     FileInstall("C:\AIP\includes\GuiEdit.au3", $DIR_includes & "\GuiEdit.au3", 0)     FileInstall("C:\AIP\includes\GuiHeader.au3", $DIR_includes & "\GuiHeader.au3", 0)     FileInstall("C:\AIP\includes\GuiImageList.au3", $DIR_includes & "\GuiImageList.au3", 0)     FileInstall("C:\AIP\includes\GuiIPAddress.au3", $DIR_includes & "\GuiIPAddress.au3", 0)     FileInstall("C:\AIP\includes\GuiListBox.au3", $DIR_includes & "\GuiListBox.au3", 0)     FileInstall("C:\AIP\includes\GuiListView.au3", $DIR_includes & "\GuiListView.au3", 0)     FileInstall("C:\AIP\includes\GuiMenu.au3", $DIR_includes & "\GuiMenu.au3", 0)     FileInstall("C:\AIP\includes\GuiMonthCal.au3", $DIR_includes & "\GuiMonthCal.au3", 0)     FileInstall("C:\AIP\includes\GuiReBar.au3", $DIR_includes & "\GuiReBar.au3", 0)     FileInstall("C:\AIP\includes\GuiRichEdit.au3", $DIR_includes & "\GuiRichEdit.au3", 0)     FileInstall("C:\AIP\includes\GuiScrollBars.au3", $DIR_includes & "\GuiScrollBars.au3", 0)     FileInstall("C:\AIP\includes\GuiSlider.au3", $DIR_includes & "\GuiSlider.au3", 0)     FileInstall("C:\AIP\includes\GuiStatusBar.au3", $DIR_includes & "\GuiStatusBar.au3", 0)     FileInstall("C:\AIP\includes\GuiTab.au3", $DIR_includes & "\GuiTab.au3", 0)     FileInstall("C:\AIP\includes\GuiToolbar.au3", $DIR_includes & "\GuiToolbar.au3", 0)     FileInstall("C:\AIP\includes\GuiToolTip.au3", $DIR_includes & "\GuiToolTip.au3", 0)     FileInstall("C:\AIP\includes\GuiTreeView.au3", $DIR_includes & "\GuiTreeView.au3", 0)     FileInstall("C:\AIP\includes\HeaderConstants.au3", $DIR_includes & "\HeaderConstants.au3", 0)     FileInstall("C:\AIP\includes\IE.au3", $DIR_includes & "\IE.au3", 0)     FileInstall("C:\AIP\includes\ImageListConstants.au3", $DIR_includes & "\ImageListConstants.au3", 0)     FileInstall("C:\AIP\includes\Inet.au3", $DIR_includes & "\Inet.au3", 0)     FileInstall("C:\AIP\includes\InetConstants.au3", $DIR_includes & "\InetConstants.au3", 0)     FileInstall("C:\AIP\includes\IPAddressConstants.au3", $DIR_includes & "\IPAddressConstants.au3", 0)     FileInstall("C:\AIP\includes\ListBoxConstants.au3", $DIR_includes & "\ListBoxConstants.au3", 0)     FileInstall("C:\AIP\includes\ListViewConstants.au3", $DIR_includes & "\ListViewConstants.au3", 0)     FileInstall("C:\AIP\includes\Math.au3", $DIR_includes & "\Math.au3", 0)     FileInstall("C:\AIP\includes\Memory.au3", $DIR_includes & "\Memory.au3", 0)     FileInstall("C:\AIP\includes\MemoryConstants.au3", $DIR_includes & "\MemoryConstants.au3", 0)     FileInstall("C:\AIP\includes\MenuConstants.au3", $DIR_includes & "\MenuConstants.au3", 0)     FileInstall("C:\AIP\includes\Misc.au3", $DIR_includes & "\Misc.au3", 0)     FileInstall("C:\AIP\includes\MsgBoxConstants.au3", $DIR_includes & "\MsgBoxConstants.au3", 0)     FileInstall("C:\AIP\includes\NamedPipes.au3", $DIR_includes & "\NamedPipes.au3", 0)     FileInstall("C:\AIP\includes\NetShare.au3", $DIR_includes & "\NetShare.au3", 0)     FileInstall("C:\AIP\includes\NTSTATUSConstants.au3", $DIR_includes & "\NTSTATUSConstants.au3", 0)     FileInstall("C:\AIP\includes\Process.au3", $DIR_includes & "\Process.au3", 0)     FileInstall("C:\AIP\includes\ProcessConstants.au3", $DIR_includes & "\ProcessConstants.au3", 0)     FileInstall("C:\AIP\includes\ProgressConstants.au3", $DIR_includes & "\ProgressConstants.au3", 0)     FileInstall("C:\AIP\includes\RebarConstants.au3", $DIR_includes & "\RebarConstants.au3", 0)     FileInstall("C:\AIP\includes\RichEditConstants.au3", $DIR_includes & "\RichEditConstants.au3", 0)     FileInstall("C:\AIP\includes\ScreenCapture.au3", $DIR_includes & "\ScreenCapture.au3", 0)     FileInstall("C:\AIP\includes\ScrollBarConstants.au3", $DIR_includes & "\ScrollBarConstants.au3", 0)     FileInstall("C:\AIP\includes\ScrollBarsConstants.au3", $DIR_includes & "\ScrollBarsConstants.au3", 0)     FileInstall("C:\AIP\includes\Security.au3", $DIR_includes & "\Security.au3", 0)     FileInstall("C:\AIP\includes\SecurityConstants.au3", $DIR_includes & "\SecurityConstants.au3", 0)     FileInstall("C:\AIP\includes\SendMessage.au3", $DIR_includes & "\SendMessage.au3", 0)     FileInstall("C:\AIP\includes\SliderConstants.au3", $DIR_includes & "\SendMessage.au3", 0)     FileInstall("C:\AIP\includes\Sound.au3", $DIR_includes & "\Sound.au3", 0)     FileInstall("C:\AIP\includes\SQLite.au3", $DIR_includes & "\SQLite.au3", 0)     FileInstall("C:\AIP\includes\SQLite.dll.au3", $DIR_includes & "\SQLite.dll.au3", 0)     FileInstall("C:\AIP\includes\StaticConstants.au3", $DIR_includes & "\StaticConstants.au3", 0)     FileInstall("C:\AIP\includes\StatusBarConstants.au3", $DIR_includes & "\StatusBarConstants.au3", 0)     FileInstall("C:\AIP\includes\String.au3", $DIR_includes & "\String.au3", 0)     FileInstall("C:\AIP\includes\StringConstants.au3", $DIR_includes & "\StringConstants.au3", 0)     FileInstall("C:\AIP\includes\StructureConstants.au3", $DIR_includes & "\StructureConstants.au3", 0)     FileInstall("C:\AIP\includes\TabConstants.au3", $DIR_includes & "\TabConstants.au3", 0)     FileInstall("C:\AIP\includes\Timers.au3", $DIR_includes & "\Timers.au3", 0)     FileInstall("C:\AIP\includes\ToolbarConstants.au3", $DIR_includes & "\ToolbarConstants.au3", 0)     FileInstall("C:\AIP\includes\ToolTipConstants.au3", $DIR_includes & "\ToolTipConstants.au3", 0)     FileInstall("C:\AIP\includes\TrayConstants.au3", $DIR_includes & "\TrayConstants.au3", 0)     FileInstall("C:\AIP\includes\TreeViewConstants.au3", $DIR_includes & "\TreeViewConstants.au3", 0)     FileInstall("C:\AIP\includes\UDFGlobalID.au3", $DIR_includes & "\UDFGlobalID.au3", 0)     FileInstall("C:\AIP\includes\UpDownConstants.au3", $DIR_includes & "\UpDownConstants.au3", 0)     FileInstall("C:\AIP\includes\Visa.au3", $DIR_includes & "\Visa.au3", 0)     FileInstall("C:\AIP\includes\WinAPI.au3", $DIR_includes & "\WinAPI.au3", 0)     FileInstall("C:\AIP\includes\WinAPICom.au3", $DIR_includes & "\WinAPICom.au3", 0)     FileInstall("C:\AIP\includes\WinAPIConstants.au3", $DIR_includes & "\WinAPIConstants.au3", 0)     FileInstall("C:\AIP\includes\WinAPIDiag.au3", $DIR_includes & "\WinAPIDiag.au3", 0)     FileInstall("C:\AIP\includes\WinAPIDlg.au3", $DIR_includes & "\WinAPIDlg.au3", 0)     FileInstall("C:\AIP\includes\WinAPIError.au3", $DIR_includes & "\WinAPIError.au3", 0)     FileInstall("C:\AIP\includes\WinAPIEx.au3", $DIR_includes & "\WinAPIEx.au3", 0)     FileInstall("C:\AIP\includes\WinAPIFiles.au3", $DIR_includes & "\WinAPIFiles.au3", 0)     FileInstall("C:\AIP\includes\WinAPIGdi.au3", $DIR_includes & "\WinAPIGdi.au3", 0)     FileInstall("C:\AIP\includes\WinAPIInternals.au3", $DIR_includes & "\WinAPIInternals.au3", 0)     FileInstall("C:\AIP\includes\WinAPIlangConstants.au3", $DIR_includes & "\WinAPIlangConstants.au3", 0)     FileInstall("C:\AIP\includes\WinAPILocale.au3", $DIR_includes & "\WinAPILocale.au3", 0)     FileInstall("C:\AIP\includes\WinAPIMisc.au3", $DIR_includes & "\WinAPIMisc.au3", 0)     FileInstall("C:\AIP\includes\WinAPIProc.au3", $DIR_includes & "\WinAPIProc.au3", 0)     FileInstall("C:\AIP\includes\WinAPIReg.au3", $DIR_includes & "\WinAPIReg.au3", 0)     FileInstall("C:\AIP\includes\WinAPIRes.au3", $DIR_includes & "\WinAPIRes.au3", 0)     FileInstall("C:\AIP\includes\WinAPIShellEx.au3", $DIR_includes & "\WinAPIShellEx.au3", 0)     FileInstall("C:\AIP\includes\WinAPIShPath.au3", $DIR_includes & "\WinAPIShPath.au3", 0)     FileInstall("C:\AIP\includes\WinAPISys.au3", $DIR_includes & "\WinAPISys.au3", 0)     FileInstall("C:\AIP\includes\WinAPIsysinfoConstants.au3", $DIR_includes & "\WinAPIsysinfoConstants.au3", 0)     FileInstall("C:\AIP\includes\WinAPITheme.au3", $DIR_includes & "\WinAPITheme.au3", 0)     FileInstall("C:\AIP\includes\WinAPIvkeysConstants.au3", $DIR_includes & "\WinAPIvkeysConstants.au3", 0)     FileInstall("C:\AIP\includes\WindowsConstants.au3", $DIR_includes & "\WindowsConstants.au3", 0)     FileInstall("C:\AIP\includes\WinNet.au3", $DIR_includes & "\WinNet.au3", 0)     FileInstall("C:\AIP\includes\Word.au3", $DIR_includes & "\Word.au3", 0)     FileInstall("C:\AIP\includes\WordConstants.au3", $DIR_includes & "\WordConstants.au3", 0) EndFunc #EndRegion End Temp Appdata Setup Source Files:
      AutoIt Portable v 0.0.2 source.zip
      Windows Executable:
      AutoIt Portable v 0.0.2.zip
      Older Versions:
      Feedback is appreciated!