# Archrival Deploy (First Post)

## Recommended Posts

I have been using AutoIT for a few years. I think it's time to give something back to the community.

Archrival Deploy

Description: Archrival Deploy 1.0 (AutoIT BETA 3.1.1.130)

Connects to AD and populates treeview with available OU's \ Computers, populates listview with items in Packages folder. When you have selected the destination and start the process, PSEXEC will copy the package host EXE to the client machine and run it with the same credentials you used for AD. That EXE in turn launches whatever program on whatever UNC path it contains (hard coded). A folder called "logs" should be created under the UNC path which will tell you if the program completed successfully or failed. This first version offers no settings aside from the config.ini and will probably crash if run outside a domain.

Installation:

1. Unzip to a folder

2. Compile with latest BETA (don't have to)

3. Modify config.ini to reflect your domain, I recommend using User name and Password for testing only

4. Edit plugins individually to reflect their UNC paths and file names, MUST COMPILE EACH ONE

Notes:

-Checking a root OU does not select sub-items, I have not written a routine for this yet.

-This will currently push one item at a time onto one machine at a time (Sequentially), else too many items will spawn on the client machine.

-I have tested this on both machines that are locked and logged off and it ran okay. The included packages will run completely silent aside from the tray icon. I think Office 2003 is the only one that shows a status bar.

-The Active Directory / LDAP functionality was borrowed from the Join Domain tool floating around but is stripped down.

-The settings I use for PSEXEC push the individual package scripts to the clients before running. You could also run from a local share and consolidate the packages and the files together. I personally have the installation source for each plugin strewn about different servers and don't want shares open from my machine.

If there are any problems / questions let me know.

Edited by weaponx

##### Share on other sites

is it possible to remote query the target before installation to see if a specific package has been installed?

##### Share on other sites

is it possible to remote query the target before installation to see if a specific package has been installed?

Well there are a couple ways I could implement that.

The first would be to check the admin shares of the remote system to verify that certain files exist, maybe in the Packages config.ini I could put a list of paths to be checked.

An easier way would be to implement the check right into each package. Since the package is executed on the destination machine before any actual installation takes place you could have it check the registry and check if files exist on the destination.

$root="\\United\3rdParty\Software\Acrobat Reader\Adobe 7.0.7"$file = FileExists ( $root & "\setup.exe" ) If$file = 0 Then Exit
DirCreate ( $root & "\Logs" )$log = FileOpen ( $root & "\Logs\" & @ComputerName & "-" & @YEAR & "-" & @MON &"-" & @MDAY & ".log", 1 ) If FileExists ( @ProgramFilesDir & "\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" ) Then FileWrite($log, "Package already installed " & @HOUR & ":" & @MIN & @CRLF)
Exit(0)
EndIf

FileWrite($log, "Started at " & @HOUR & ":" & @MIN & @CRLF)$run = RunWait ("msiexec.exe /i ""Adobe Reader 7.0.7.msi"" TRANSFORMS=""acrobat7.mst"" /qb- /norestart" , $root & "\") If$run = 0 Then
FileWrite($log, "Complete at " & @HOUR & ":" & @MIN & @CRLF) FileClose ($log )
Exit(0)
Else
FileWrite($log, "Failed at " & @HOUR & ":" & @MIN & @CRLF) FileClose ($log )
Exit(1)
EndIf

I really like PSEXEC as it makes my job easier but theres no 2 way communication involved. I was working on another version of this program which required a service be installed on every machine (TCP Functions). This works nicely for me though. At my old job we used Symantec ON Technology to deploy everything but it was bloated. My version is quite fast and it simply writes logs to let you know the status of a package.

##### Share on other sites

@weaponx, nice idea. It has much potential.

Cheers..

##### Share on other sites

@weaponx, nice idea. It has much potential.

Cheers..

Thanks, I actually use this daily. I wonder if anyone has had any luck with it since I posted.

##### Share on other sites

Thanks, I actually use this daily. I wonder if anyone has had any luck with it since I posted.

Not sure but I think it is a useful tool in deplying software. With a little automation on creating some of the files would make this a great.

Cheers..

##### Share on other sites

weaponx, are you still doing any development on this, or have you stopped? I've been wanting a way to do something similar to this for some time, and just came across this topic.

##### Share on other sites

weaponx, are you still doing any development on this, or have you stopped? I've been wanting a way to do something similar to this for some time, and just came across this topic.

I'm still alive. I will try to update the packages soon and maybe automate the initial setup of your OU and whatnot.

##### Share on other sites

;Path to FOLDER where exe resides
$root= "\\Path\to\folder\containing\exe\" ;$root = @ScriptDir

;Verify EXE is present
$file = FileExists ($root & "\AdbeRdr80_en_US.exe" )
If $file = 0 Then Exit ;Create logfile folder DirCreate ($root & "\Logs" )

;Create logfile in this format ComputerName-YYYY-MM-DD.log
$log = FileOpen ($root & "\Logs\" & @ComputerName & "-" & @YEAR & "-" & @MON &"-" & @MDAY & ".log", 1 )
FileWrite($log, "Started at " & @HOUR & ":" & @MIN & @CRLF) ;Check if already installed If FileExists ( @ProgramFilesDir & "\Adobe\Reader 8.0\Reader\AcroRd32.exe" ) Then FileWrite($log, "Package already installed " & @HOUR & ":" & @MIN & @CRLF)
Exit(0)
EndIf

;Run unattended with progress bar
$run = RunWait ($root & '\AdbeRdr80_en_US.EXE /sPB /rs /rps /msi"ALLUSERS=TRUE EULA_ACCEPT=YES SUPPRESS_APP_LAUNCH=YES"' , $root & "\") ;Run unattended silently ;$run = RunWait ( $root & '\AdbeRdr80_en_US.EXE /rs /rps /msi"ALLUSERS=TRUE EULA_ACCEPT=YES SUPPRESS_APP_LAUNCH=YES"' ,$root & "\")

;Record log
If $run = 0 Then FileWrite($log, "Complete at " & @HOUR & ":" & @MIN & @CRLF)
FileClose ( $log ) Exit(0) Else FileWrite($log, "Failed at " & @HOUR & ":" & @MIN & @CRLF)
FileClose ( $log ) Exit(1) EndIf #### Share this post ##### Link to post ##### Share on other sites JAVA RUNTIME 1.5 Update 10 EXE INSTALL ;Path to FOLDER where exe resides$root= "\\Path\to\folder\containing\exe\"
;Local test path
;$root = @ScriptDir ;Verify EXE is present$file = FileExists ( $root & "\jre-1_5_0_10-windows-i586-p-s.exe" ) If$file = 0 Then Exit

;Create logfile folder
DirCreate ( $root & "\Logs" ) ;Create logfile in this format ComputerName-YYYY-MM-DD.log$log = FileOpen ( $root & "\Logs\" & @ComputerName & "-" & @YEAR & "-" & @MON &"-" & @MDAY & ".log", 1 ) FileWrite($log, "Started  at " & @HOUR & ":" & @MIN & @CRLF)

If FileExists ( @ProgramFilesDir & "\Java\jre1.5.0_10\bin\java.exe" ) Then
FileWrite($log, "Package already installed " & @HOUR & ":" & @MIN & @CRLF) Exit(0) EndIf ;Run unattended silently$run = RunWait ( $root & '\jre-1_5_0_10-windows-i586-p-s.exe /s /v"/qn IEXPLORER=1 MOZILLA=1 JAVAUPDATE=0 AgreeToLicense=1 EULA=1"' ,$root & "\")

;Record log
If $run = 0 Then FileWrite($log, "Complete at " & @HOUR & ":" & @MIN & @CRLF)
FileClose ( $log ) Exit(0) Else FileWrite($log, "Failed at " & @HOUR & ":" & @MIN & @CRLF)
FileClose ( $log ) Exit(1) EndIf Edited by weaponx #### Share this post ##### Link to post ##### Share on other sites *** moving this to general support forum...sorry **** updating software for each end-user and looking for some feedback please. once the users click the menu option on the intranet, the silent script will start. i would like to record each @ComputerName and time, and if their file alreadyt exists, then a msgbox will let them know the update has already been made, and exit script. if not, then the silent install will begin, and after it's finished, have a quick msgbox letting them know it's complete. this way we can monitor who has made the update afer we send out the email notification. many thanks to weaponx for the start. ;~ path to folder where msi resides$root= "\\server\fld1\fld2\fld3\Logs\"

If FileExists ( $root & @ComputerName & "-" & @YEAR & "-" & @MON &"-" & @MDAY & ".log") Then MsgBox (0, "File Exists", "Update Exists Already!", 1) Exit(0) EndIf RunWait(@ComSpec & ' /c "msiexec /i \\server\fld1\fld2\fld3\filetorun.msi/q"', @TempDir, @SW_HIDE) ;~ create logfile in this format computername-yyyy-mm-dd.log$log = FileOpen ( $root & @ComputerName & "-" & @YEAR & "-" & @MON &"-" & @MDAY & ".log", 1 ) FileWrite($log, "Started  at " & @HOUR & ":" & @MIN & @CRLF)

;~  update complete msgbox
MsgBox (0, "Update", "Update Complete!", 1)
Edited by flyonthewall

##### Share on other sites

You do not by chance still have this posted somewhere do you?

##### Share on other sites

This thread is more than 6 years old and the poster has been offline for more than 3 years.

Do you really expect a response?

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2018-09-01 - Version 1.3.4.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:

##### Share on other sites
This topic is now closed to further replies.

×

• Wiki

• Back

• Git