Jump to content

Archrival Deploy (First Post)


weaponx
 Share

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

(Original link removed to free up attachment space 2/15/08: 460 downloads)

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
Link to comment
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.

Try this one for Adobe Reader 7.0.7

$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.

Link to comment
Share on other sites

  • 3 weeks later...
  • 5 months later...

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.

Link to comment
Share on other sites

ADOBE READER 8 PLUGIN, EXE INSTALL

;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
Link to comment
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)

;Check if already installed
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
Link to comment
Share on other sites

  • 10 months later...

*** 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
Link to comment
Share on other sites

  • 6 years later...

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 (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...