; *** Start added by AutoIt3Wrapper *** #include ; *** End added by AutoIt3Wrapper *** #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=Removable Drive.ico #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_Add_Constants=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include #include #include #include #include #include "ProcessEx.au3" ;---------------------------------------------------------------------------------------------------------------------------------------- ;Set AutoIt options that change the way information is interpreted ;---------------------------------------------------------------------------------------------------------------------------------------- AutoItSetOption ("CaretCoordMode", 0) AutoItSetOption ("ExpandEnvStrings", 1) AutoItSetOption ("ExpandVarStrings", 1) AutoItSetOption ("GUICloseOnESC", 1) ;AutoItSetOption ("GUICoordMode", 0) AutoItSetOption ("GUIOnEventMode", 1) ;AutoItSetOption ("MustDeclareVars", 1);like Option Explicit in VBScript.We disabled it so that it won't ask for declarations of variables as when we enable it we are getting error with default au3 files which we import. AutoItSetOption ("PixelCoordMode", 0) AutoItSetOption ("TrayAutoPause", 0) AutoItSetOption ("TrayMenuMode", 1) AutoItSetOption ("TrayOnEventMode", 1) AutoItSetOption ("WinDetectHiddenText", 1) AutoItSetOption ("WinSearchChildren", 1) AutoItSetOption ("WinTitleMatchMode", -2) ;---------------------------------------------------------------------------------------------------------------------------------------- ;Define Local and Global Variables ;---------------------------------------------------------------------------------------------------------------------------------------- ;Global $sInstaller, $sParameters Local $AppName,$SetupFolder,$BuildNumber,$Version ;Variables used to switch on/off for ISM Building Local $isOpenAccess64 = True Local $isOpenAccess32 = True Local $isERwinDM64 = True Local $isERwinDM32 = True Local $isNavigator64 = True Local $isNavigator32 = True Local $isMartServer64 = True Local $isMartServer32 = True ;---------------------------------------------------------------------------------------------------------------------------------------- ;Define Tray ICON Events ;---------------------------------------------------------------------------------------------------------------------------------------- $iAbout = TrayCreateItem("About") TrayCreateItem("") ; Create a separator line. $iExit = TrayCreateItem("Exit") TrayItemSetOnEvent($iExit, "ExitScript") TrayItemSetOnEvent($iAbout, "About") TraySetState($TRAY_ICONSTATE_SHOW) ;---------------------------------------------------------------------------------------------------------------------------------------- ; Main Code starts here ;---------------------------------------------------------------------------------------------------------------------------------------- $AppName = "Auto Build" ;ShowTrayTip($AppName, "Copying Output files to host", 10, $TIP_ICONASTERISK) $ERwinISM = "C:\ERwin ISM" SelectFolder($ERwinISM,"ERwin Project: ERwin ISM") $SetupFolder = "C:\ERwin Setup Files" SelectFolder($SetupFolder,"ERwin Setup Files Saving") $BuildNumber=5011 $Version="r9.64.02" Local $bAllISM = MsgBox (4,"All ISM Files" , "Do you want to Build All ISM files??");Kept Yes/No so that user can select to build all ISM Files or not.So we can skip this logic in if we are using from BuildGUI. If $bAllISM = 6 Then ;SplashTextOn ("", "you have pressed Yes", 250, 30,-1,-1,1,-1,14,600) Build64();Comment if importing as library in guibuild.au3 Build32();Comment if importing as library in guibuild.au3 ;Sleep (2000) ;ElseIf $t = 7 Then ;SplashTextOn ("", "you have pressed No", 250, 30,-1,-1,1,-1,14,600) ;Sleep (2000) EndIf ;------------------------------------------------------------------------------------------------------------------------------------ ; Functions and Subroutines start here ;------------------------------------------------------------------------------------------------------------------------------------ Func About() ; Display a message box about the AutoIt version and installation path of the AutoIt executable. MsgBox($MB_SYSTEMMODAL, "Author INFO", "Created by Uday Kiran Reddy." & @CRLF & @CRLF & _ "Version: " & @AutoItVersion & @CRLF & _ "Install Path: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1)) ; Find the folder of a full path. EndFunc ;==>TrayEvent Func ExitScript() Logging("User Stopped the Execution",4) Exit EndFunc ;==>ExitScript Func Build32() Logging("Started Building 32 bit ISM Files",4) if $isOpenAccess32 Then Build("$ERwinISM$\x86\ISM\ERwinOpenAccess6_9.64.02_32bit.ism","Release 1") if $isMartServer32 Then Build("$ERwinISM$\x86\ISM\ERwin MartServer r9.64.02_32bit.ism","SINGLE_EXE_IMAGE","$ERwinISM$\x86\ISM\ERwin MartServer r9.64.02_32bit\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\DISK1\setup.exe","ERwin Mart Server $Version$ (32-bit)") if $isERwinDM32 Then Build("$ERwinISM$\x86\ISM\ERwin Data Modeler r9.64.02_32bit.ism","SINGLE_EXE_IMAGE","$ERwinISM$\x86\32\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\Disk1\setup.exe","ERwin Data Modeler $Version$ (32-bit)_$BuildNumber$") if $isNavigator32 Then Build("$ERwinISM$\x86\ISM\Navigator r9.64.02_32bit.ism","SINGLE_EXE_IMAGE","$ERwinISM$\x86\32Navigator\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\Disk1\setup.exe","ERwin Navigator $Version$ (32-bit)_$BuildNumber$") Logging("Completed Building 32 bit ISM Files",4) EndFunc Func Build64() Logging("Started Building 64 bit ISM Files",4) Logging("$isOpenAccess64$ $isERwinDM64$ $isNavigator64$ $isMartServer64$") if $isOpenAccess64 Then Build("$ERwinISM$\x64\ISM\ERwinOpenAccess6_9.64.02_64bit.ism","Release 1") if $isERwinDM64 Then Build("$ERwinISM$\x64\ISM\ERwin Data Modeler r9.64.02_64bit.ism","Release 1","$ERwinISM$\x64\64\Product Configuration 1\Release 1\DiskImages\Disk1\setup.exe","ERwin Data Modeler $Version$ (64-bit)_$BuildNumber$") if $isNavigator64 Then Build("$ERwinISM$\x64\ISM\Navigator r9.64.02_64bit.ism","Release 1","$ERwinISM$\x64\64Navigator\Product Configuration 1\Release 1\DiskImages\Disk1\setup.exe","ERwin Navigator $Version$ (64-bit)_$BuildNumber$") if $isMartServer64 Then Build("$ERwinISM$\x86\ISM\ERwin MartServer r9.64.02_64bit.ism","SINGLE_EXE_IMAGE","$ERwinISM$\x86\ISM\ERwin MartServer r9.64.02_64bit\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\DISK1\setup.exe","ERwin Mart Server $Version$ (64-bit)") Logging("Completed Building 64 bit ISM Files",4) EndFunc Func Build($sOutputIsm,$ReleaseName,$sFilePath="None",$NewName="None") ;build the ism to get the msi If not FileExists($sOutputIsm) Then Logging("File Not Found: $sOutputIsm$",4) MsgBox($MB_OK + $MB_ICONERROR, "Error", "Could not find file ""$sOutputIsm$"".") Return EndIf Logging("Started Building $sOutputIsm$",4) ShowTrayTip($AppName, "Started Building $sOutputIsm$", 10, $TIP_ICONASTERISK) Dim $sBuildExe,$sBuildCommand,$Ret $sBuildExe = FindFileInPath("ISCmdBld.exe", "%ProgramFiles(x86)%\InstallShield") $sBuildCommand = """$sBuildExe$"" -p ""$sOutputIsm$"" -r ""$ReleaseName$""" $sOutput = _Process_RunCommand($PROCESS_RUNWAIT, $PROCESS_COMMAND & """" &$sBuildCommand &"""") ; Record the output $Ret = @extended ; Note the exit code LoggingISM("This is the result: " & @CRLF & @CRLF & $sOutput & @CRLF & @CRLF & "The exit code was: " & $Ret,FileNameOnly($sOutputIsm)) If $Ret <> 0 Then ShowTrayTip($AppName,"ISM Build Failed, Please build the ISM Manually.",10, $TIP_ICONHAND) MsgBox($MB_OK + $MB_ICONERROR, "Error", "Could not build ""$sOutputIsm$"". Please build manually.") Logging("Error $Ret$ while Building $sOutputIsm$",4) Return;Exit(1) Else ShowTrayTip($AppName,"ISM Build Completed",10, $TIP_ICONASTERISK) Logging("Completed Building $sOutputIsm$",4) if not StringCompare($NewName, "None")=0 then MoveEXE($sFilePath,$NewName) EndIf EndFunc Func MoveEXE($sFilePath,$NewName) Dim $DestinationFolder,$iMove $DestinationFolder= trimLastSlash($SetupFolder) & "\" & TodaysDate() IF Not FileExists($DestinationFolder) and StringInStr(FileGetAttrib($DestinationFolder),"D") Then DirCreate ($DestinationFolder) EndIf FileReplace1($sFilePath,$DestinationFolder) Local $sDrive = "", $sDir = "", $sFileName = "", $sExtension = "" Local $aPathSplit = _PathSplit($sFilePath, $sDrive, $sDir, $sFileName, $sExtension) Local $sSourceFile = trimLastSlash($DestinationFolder) & "\" & $sFileName & $sExtension $iMove = FileMove($sSourceFile, "$DestinationFolder$\$NewName$$sExtension$", $FC_OVERWRITE) LogStatus($iMove,"$sSourceFile$ to $DestinationFolder$\$NewName$$sExtension$",5) EndFunc Func FindFileInPath($sFileName, $sPath) ;finds the file specified in the path specified or any of it's subfolders Local $aFileList $aFileList = _FileListToArrayRec($sPath, $sFileName, 1, 1, 1, 2) If UBound($aFileList) > 1 Then Return $aFileList[1] Else Return "" EndIf EndFunc Func ShowTrayTip($sTitle, $sText, $iTime, $iIcon) ;set the tray icon popup and baloon tip message TrayTip($sTitle, $sText, $iTime, $iIcon) ;this pops up a baloon tip for specified seconds TraySetToolTip($sText) ;this sets the mouse-over information EndFunc Func _IsVarIsNull ( $_Var ) If Not $_Var Then Return True Else Return False EndIf EndFunc