Jump to content

MHz

Member
  • Posts

    1,691
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Australia

Posts posted by MHz

  1. The last set of switches had a /n which is not right. I have broken down the strings some and added passing fullpath to msiexec if helps. I just would do one check for working directory at start of script and just once for EnvGet() as well. Through revising your script, I'm not sure if I fixed anything by changing it with double quote changes etc. I would recommend that you double check your switches though msiexec normally pops up if a syntax error exists. I also removed the "REBOOT=reallysuppress" as your already using /norestart.

    Global $log, $switches, $systemdrive = EnvGet('SYSTEMDRIVE')

    If @WorkingDir <> @ScriptDir Then
    FileChangeDir(@ScriptDir)
    EndIf

    ;.NET Framework 2.0 is installed before
    ;~ $log = '/l "' & $systemdrive & '\dotnetfx30_dotnetfx20.log"'
    ;~ $switches = '/q /c:"install.exe" /Q ' & $log
    ;~ RunWait('"' & @ScriptDir & '\wcu\dotnetFramework\dotnetfx.exe" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_msxml.log"'
    $switches = '/qn /norestart ADDLOCAL=ALL ' & $log
    RunWait('msiexec -i "' & @ScriptDir & '\wcu\MSXML\msxml6.msi" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_rgbrast.log"'
    $switches = '/qn /norestart ADDLOCAL=ALL ' & $log
    RunWait('msiexec -i "' & @ScriptDir & '\wcu\RGBRAST\x86\RGB9RAST_x86.msi" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_wic.log"'
    $switches = '/quiet /norestart /nobackup /overwriteoem NOVSUI=1 ADDLOCAL=ALL ' & $log
    RunWait('"' & @ScriptDir & '\wcu\WIC\WIC_X86_ENU.exe" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_dotnetfx30.log"'
    $switches = '/qn /norestart NOVSUI=1 ADDLOCAL=ALL ' & $log
    RunWait('msiexec -i "' & @ScriptDir & '\vs_setup.msi" ' & $switches)

    $log = '/log:"' & $systemdrive & '\dotnetfx30_xps.log"'
    $switches = '/quiet /norestart /nobackup /overwriteoem ' & $log
    RunWait('"' & @ScriptDir & '\wcu\XPS\XPSEPSC-x86-en-US.exe" ' & $switches)

    $log = '/l "' & $systemdrive & '\dotnetfx30_wcf.log"'
    $switches = '/q ' & $log
    RunWait('"' & @ScriptDir & '\wcu\WCF\wcf.exe" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_wpf.log"'
    $switches = '/qn /norestart STANDALONE=no ADDLOCAL=ALL ' & $log
    RunWait('msiexec -i "' & @ScriptDir & '\wcu\WPF\wpf.msi" ' & $switches)

    $log = '/log "' & $systemdrive & '\dotnetfx30_wf.log"'
    $switches = '/qn /norestart ARPSYSTEMCOMPONENT=1 STANDALONE=no ADDLOCAL=ALL ' & $log
    RunWait('msiexec -i "' & @ScriptDir & '\wcu\WF\WF_3.0_x86.msi" ' & $switches)

    Notice how I use single quotes to wrap the double quotes for ease.

    :)

  2. but where shall i put the extensions?

    If you want to do it unattended, then you can do it as Shark has mentioned of archiving the mozilla folder in %appdir% or you would repack the extensions into the install package and modify the config.ini to install them. CCK is used for custom config installs so have a look at it. CCK instructions here for using config.ini.

    You could use FEBE and CLEO to help with general backing up or saving xpi files into a single xpi file.

  3. i saw somewhere that, to install a extension with firefox, i just had to use this:
    Firefox.exe -install-global-extension "name-of-extension.xpi"

    AFAIK, nothing unattended. The switch is used for Global install of extensions.

    How do I install a global extension?

    Typically people install extensions interactively and they are then installed into their user directory. For something like the CCK, you want to install it as a global extension. Global extensions are stored in the extensions directory where binary is located. To install a system extension, run Firefox with this syntax:

    firefox -install-global-extension mycck.xpi

    This will cause the extension to be installed as a global extension.

  4. Example 2 changed to suit. Ensure you have SysTray_UDF.au3 next to your script when you run it and it will include it. If compiled, the include file will be included in the executable.

    ; -- Example 2 --
    #NoTrayIcon
    #include "SysTray_UDF.au3"
    Run("daemon.exe")
    $st_process = "daemon.exe"; change this if needed
    _SysTrayIconRemove(_SysTrayIconIndex($st_process))
    ; Note that only the icon was removed; process still should be running

  5. I found Autoit Info tool to be useless w/o telling me the solution. Then?

    If you think Autoit Info Tool is useless then you may as well give up now. Autoit Info Tool is helping to identify and confirm exactly what the problem is. Sometimes problems hide themselves well to what we can see.

    Place the Opt("TrayIconDebug", 1) at the top of the script and try it again. When installation stops at the window, then move your mouse over the systray icon to see the line that the script stops at. A tooltip will popup will show the line.

    As above, add this line...

    Opt('TrayIconDebug', 1)

    ...and remove this line else you will have no systray icon.

    AutoItSetOption("TrayIconHide", 1)

    Looking at your picture, the last WinWait() looks correct. It does not seem logical that the script is waiting for the last window but perhaps a previous WinWait() in the script.

    Edit:

    Looking at the script again, I would guess that you may already have QuickTime Installed and that the window does not appear to inform that "QuickTime 6 is required". That would hang the installation.

    In that case, try this script that uses Adlib to check for the QuickTime Window.

    Run('msiexec /i "' & @ScriptDir & '\Adobe Illustrator CS2.msi"')

    ; Welcome dialog.
    If WinWait("Adobe Illustrator CS2 - Setup", "The InstallShield(R) Wizard will install Adobe Illustrator CS2", 60) Then
    ControlClick("Adobe Illustrator CS2 - Setup", "The InstallShield(R) Wizard will install Adobe Illustrator CS2", "Button1")

    ; License Agreement.
    WinWait("Adobe Illustrator CS2 - License Agreement")
    ControlClick("Adobe Illustrator CS2 - License Agreement", "", "Button5")

    ; Customer Information.
    WinWait("Adobe Illustrator CS2 - Setup", "The following information must be entered before installation")
    ControlClick("Adobe Illustrator CS2 - Setup", "The following information must be entered before installation", "Button2")

    ; Destination Folder.
    WinWait("Adobe Illustrator CS2 - Setup", "Destination Folder")
    ControlClick("Adobe Illustrator CS2 - Setup", "Destination Folder", "Button1")

    ; Ready to Install the Program.
    WinWait("Adobe Illustrator CS2 - Setup", "Ready to Install the Program")
    ControlClick("Adobe Illustrator CS2 - Setup", "Ready to Install the Program", "Button1")

    Sleep(5000)
    AdlibEnable('_Adlib', 500)

    ; InstallShield Wizard Completed.
    WinWait("Adobe Illustrator CS2 - Setup", "InstallShield Wizard Completed")
    ControlClick("Adobe Illustrator CS2 - Setup", "InstallShield Wizard Completed", "Button3")

    AdlibDisable()
    EndIf

    Exit

    Func OnAutoItStart()
    ; Single script instance only
    If WinExists(@ScriptName & '_Interpreter') Then Exit
    AutoItWinSetTitle(@ScriptName & '_Interpreter')
    EndFunc

    Func _Adlib()
    ; QuickTime 6 is required.
    If WinExists("Adobe Illustrator CS2 - Setup", "QuickTime 6 is required") Then
    ControlClick("Adobe Illustrator CS2 - Setup", "QuickTime 6 is required", "Button1")
    EndIf
    EndFunc

  6. The last screen during installation won't automatically click "finish" button and didn't close.

    btw, the autoIt exe also still running without closing which I assumed there may has some error in the script. Help!

    If AutoIt is still running and it has stopped on the last window then AutoIt may not have recognized the last window with the strings used in the last WinWait(). You can run through the installation and use AutoIt Info Tool to check the Title, Text and ClassnameNN used and correct as needed.

    :)

  7. See I prefer it in the SendTo instead of the context menu. My context menu is already polluted with so much stuff. This is a definate improvement IMHO :thumbup

    Fast Explorer may help to clean it up. I do not use it much as preventing pollution with install scripts that delete or hide the entries makes the problem go away. Fast Explorer has some other beneficial features also. Thanks for the vote of improvement. Users now have choice of using either SendToA3X or CMenu.

    Updated SendToA3X to v1.1 so please see 1st post for details. :)

    Added an item to tidy (optimize) install scripts that I sometimes see posted here created by Au3Recorder. Also suppressed showing the systray icons as not needed in general use.

  8. Yagermeister,

    This is your script optimized some.

    $SF_1 = "Welcome.exe"

    If WinExists ( $SF_1 ) Then Exit
    AutoItWinSetTitle ( $SF_1)

    Run('Welcome.exe')
    _WinWaitActive("Studio 9 Plus - InstallShield Wizard","Select the language ")
    Send("{UP}{ENTER}")
    _WinWaitActive("Studio 9","Geef de volgende inf")
    Send("{TAB}blaat{TAB 3}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{TAB 3}{SPACE}{TAB 11}{ENTER}")
    _WinWaitActive("Studio 9 (Pinnacle Systems - Registratie)","")
    Send("{TAB 5}{ALTDOWN}{ALTUP}{DOWN 2}{ENTER}")
    _WinWaitActive("Installatie van Windows XP , Version 9.3","Licentieovereenkomst")
    Send("{TAB 4}{SPACE}{TAB 3}{ENTER}")
    _WinWaitActive("Installatie van Windows XP , Version 9.3","Selecteer het type i")
    Send("{ENTER}")
    _WinWaitActive("Installatie van Windows XP , Version 9.3","Huidige instellingen")
    Send("{ENTER}")
    _WinWaitActive("classname=#32770","Bezig met installere")
    Send("{PAUSE 5}")
    _WinWaitActive("Vraag","Moet er een shortcut")
    Send("{ENTER}")
    _WinWaitActive("Installatie van Windows XP , Version 9.3","Ja, ik wil mijn comp")
    Send("{DOWN}{ENTER}")

    Func _WinWaitActive($title, $text = "")
    WinWait($title, $text)
    If Not WinActive($title, $text) Then
    WinActivate($title, $text)
    EndIf
    WinWaitActive($title, $text)
    EndFunc

    An issue is that you are using a classname for a window title without setting an option to use them as below.

    Opt('WinTitleMatchMode', 4)

    With that window title, I'm not even sure if you should have it within the script and you just press the (PAUSE) keys 5 times? The classname title looks like an explorer window which you can just use WinClose on. I would assume by looking at it that the rest does looks normal.

    Make sure that a window called "Welcome.exe" is not running when you start your script as it will exit as your first few lines will ensure that.

    If possible, you may find it better to use AutoItMacroGenerator to generate a script for installations using Control*() functions. AutoItMacroGenerator is an included tool in CMenu, SendToA3X, or the Scite4AutoIt3 editor.

    Edit:

    SendToA3X v1.1 has now an item to tidy Au3Recorder generated scripts like the above code as shown above as easy as a wink. ;)

  9. Thanks urie, Alternative is a quite true and for a better direction, IMO. Features have been broken down to individual a3x file types and allows for the user to expand with their own. In knowledge of using the inbuilt SendTo extension to make it all work without needing to use the registry.

    It would be nice to know if 64bit OS users...can now say that it is compatible to use compared to CMenu's restriction on 64bit.

    :)

  10. SendToA3X v1.7

    SendToA3X is an alternative to the existing

    CMenu.

    Contextmenu.png

    Introduction:

    SendToA3X is a very handy SendTo extension. Adds shortcut links to your SendTo menu for any included extensions and executables. It is so handy, that you will save a lot of time for those tedious tasks, that SendToA3X can do so easy. Look below at all the features for you to enjoy.

    Features:

    • Uses PEiD, which is able to recognize installer types, if available in it's the database. Identify Installer uses this information, and is able to popup a window to show parameters associated with that installer. Identify Installer can unpack, admin, record, silent installations, if available. And also create a template AutoIt Script, to suit.
    • 7-Zip2Sfx for easily converting 7z archives to self extracting archives.
    • AutoItMacroGenerator is included to handle recording AutoIt scripts for unidentified installers.
    • AutoIt Archive Script can create archive script from a source folder. This allows AutoIt to act like an archiver.
    • AutoIt Execute Script Gui can execute a single au3/a3x file or select from a folder to execute an au3/a3x file.
    • AutoIt Execute Script StdOut can capture the stdout from a au3/a3x file and show a window after execute of the output.
    • Classes By Text can capture the ControlID's from a selected window.
    • Remove comments from AutoIt3 scripts quickly with Comment Remover.
    • Constants Generator retrieves the constants declarations that your AutoIt script only needs.
    • Create a Directory List. Preset or custom options are available.
    • Files can Execute With Parameters, optional working directory, and allowing for different window states.
      Ini2Au3 quickly converts Ini files into AutoIt syntax.
    • Filenames and paths can be easily sent to the windows clipboard, by using Path To ClipBoard.
    • Reg2Au3 quickly converts Regedit4 exported files into AutoIt3 syntax.
    • RegKey2Au3 quickly converts a Registry Key into AutoIt3 syntax.
    • Convert VBScript to AutoIt3 scripts using Vbs2Au3.
    • Includes PEiD as a separate item also, which allows the user to enhanced portable executable identification.

    Home page

    Download page

    :)

    Note:

    Uses Inno Setup Installer. Use /silent or /VerySilent to install silently.

    Easily adaptable with creating your own a3x files to increase features.

    Recommend uninstall previous versions prior to 1.3 to upgrade as the installation structure has changed for Windows Vista compatibility.

    Bugs and compliments are welcome.

    Edit:

    Updated source DllCall parameters that use pointers to prevent warning messages.

    Innounp updated to v0.20.

    AutoIt v3.2.12.0 compatible.

  11. One quick word about UPX decompression : AutoHotKey uses upx.exe to compress the scripts it compiles. And if you use upx to expand these files, then you can't run them anymore (stupid CRC ?).

    Yeah, I've noticed this too with some, but not all, AutoIt scripts. I don't know why this happens, though. Can any UPX/AutoIt/AutoHotkey gurus answer this question? I'm rather curious about this myself.

    The AutoIt3 compiler that existed before March, 2006 used to search for the script code at a certain address to locate in the executable. The compiler was changed so UPX alternatives and such could be used so now AutoIt searches for tags which give the location to the script code in the executable. The latter does not rely on a fixed address which means decompressing the executable will not destroy the chances of the script code being found.

    AutoHotKey, AFAIK, would be still using the compiler from AutoIt2 (modified) so decompressing it's executables would make the script code missing and would fail to execute.

    :)

  12. Wishlist:

    Update your install to use Innosetup so will install over the top of existing.

    Decided not to do it with CMenu, but I have used Inno Setup with the new SendToA3X. I have added most the features from CMenu over to SendToA3X so it uses the inbuilt SendTo extension that Windows uses instead of the 3rd party shell extension. I guess your wish basically come true on using Inno Setup for the move to using SendToA3X.

    You can get v1.0 from http://uawiki.org/CMenu/

    B)

    Edit:

    Separate Topic for SendToA3X below for further discussion on it.

    http://www.msfn.org/board/index.php?showtopic=83388

  13. Here is a modification of PaulIA's vb script: Automate "Taskbar and Start Menu Properties" settings

    ' Author: PaulIA (modified by MHz to use AutoItX3.dll)
    ' Requirement: AutoItX3.dll (will register only if needed, if found in system32 directory)
    ' Description: This script turns the Quick Launch toolbar on... ( No toggle )
    '
    ' ---------------------------------------------------------------------------------------

    ' Declare variables
    Dim objShellApp, objAutoIt
    Dim strTaskbarTitle

    ' Create objects
    Set objShellApp = CreateObject("Shell.Application")
    Set objAutoIt = CreateObject("AutoItX3.Control")

    ' Check that the required objects are valid
    If Not IsObject(objShellApp) Then
    WScript.Quit 1
    ElseIf Not IsObject(objAutoIt) And Not Register_AutoItX3(objAutoIt) Then
    WScript.Quit 2
    End If

    ' Open Taskbar Properties dialog
    objShellApp.TrayProperties

    ' Automate the "Taskbar and Start Menu Properties" settings window
    strTaskbarTitle = "Taskbar and Start Menu Properties" ' Title of window to automate

    With objAutoIt
    If .WinWait(strTaskbarTitle, "", 5) Then
    .WinSetState strTaskbarTitle, "", SW_HIDE ' Hide the window
    .ControlCommand strTaskbarTitle, "", "Button1", "UnCheck", "" ' UnLock the Taskbar
    '.ControlCommand strTaskbarTitle, "", "Button2", "Check", "" ' Auto-hide the Taskbar
    .ControlCommand strTaskbarTitle, "", "Button5", "Check", "" ' Show Quick Launch
    .ControlCommand strTaskbarTitle, "", "Button1", "Check", "" ' Lock the Taskbar
    .ControlClick strTaskbarTitle, "", "Button13" ' Apply settings
    .ControlClick strTaskbarTitle, "", "Button11" ' OK to complete
    End If
    End With

    ' Clean up objects
    Set objShellApp = Nothing
    Set objAutoIt = Nothing

    WScript.Quit

    Function Register_AutoItX3(objAutoIt)
    ' Search in the SystemDir and register AutoItx3.dll
    Dim objFSO, WshShell, strSystemLocation
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell = WScript.CreateObject("WScript.Shell")
    If IsObject(objFSO) And IsObject(WshShell) Then
    strSystemLocation = WshShell.ExpandEnvironmentStrings("%WinDir%") & "\System32\AutoItX3.dll"
    If objFSO.FileExists(strSystemLocation) Then
    WshShell.Run "RegSvr32 /s " & strSystemLocation, 0, True
    End If
    End If
    Set objFSO = Nothing
    Set WshShell = Nothing
    Set objAutoIt = CreateObject("AutoItX3.Control")
    If IsObject(objAutoIt) Then
    Register_AutoItX3 = True
    End If
    End Function

    And a AutoIt3 script wrapped in a function. Has the same result of no toggle as the VBScript using AutoIt3X.dll.

    _TaskBarProperties()

    Func _TaskBarProperties()
    Local $opt_WinWaitDelay, $oShellApp, $title_taskbar
    $opt_WinWaitDelay = Opt('WinWaitDelay', 1)
    $title_taskbar = 'Taskbar and Start Menu Properties'
    $oShellApp = ObjCreate('Shell.Application')
    If Not @error Then
    $oShellApp.TrayProperties
    If WinWait($title_taskbar, '', 5) Then
    WinSetState($title_taskbar, '', @SW_HIDE); Hide the window
    Sleep(250)
    ControlCommand($title_taskbar, '', 'Button1', 'UnCheck'); UnLock the Taskbar
    ;ControlCommand($title_taskbar, '', 'Button2', 'Check'); Auto-hide the Taskbar
    ControlCommand($title_taskbar, '', 'Button5', 'Check'); Show Quick Launch
    ControlCommand($title_taskbar, '', 'Button1', 'Check'); Lock the Taskbar
    ControlClick($title_taskbar, '', 'Button13'); Apply the settings
    ControlClick($title_taskbar, '', 'Button11'); OK to finish
    EndIf
    EndIf
    Opt('WinWaitDelay', $opt_WinWaitDelay)
    EndFunc

    Thanks for sharing, PaulIA. :)

  14. You may have better luck with this

    $search = FileFindFirstFile('*.cmd')  
    If $search <> -1 Then
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    RunWait(@ComSpec & ' /c "' & $file & '"', '', @SW_HIDE)
    WEnd
    FileClose($search); Close the search handle
    EndIf

    ComSpec likes double quotes, not singles, so using single quotes by default and use double quotes as needed within the string works well.

    :)

    Also while I'm here, some other variations.

    For au3 files (use AutoIt v3.2.0.1 or later)

    $search = FileFindFirstFile('*.au3')  
    If $search <> -1 Then
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    If $file = @ScriptName Then ContinueLoop
    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & $file & '"')
    WEnd
    FileClose($search); Close the search handle
    EndIf

    or a Multi-FileType

    $search = FileFindFirstFile('*.*')  
    If $search <> -1 Then
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    If $file = @ScriptName Then ContinueLoop
    Switch StringRight($file, 4)
    Case '.cmd'
    RunWait(@ComSpec & ' /c "' & $file & '"', '', @SW_HIDE)
    Case '.au3'
    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & $file & '"')
    Case '.vbs'
    RunWait(@SystemDir & '\WScript.exe "' & $file & '"')
    EndSwitch
    WEnd
    FileClose($search); Close the search handle
    EndIf

  15. Exist, not Exists

    CLS
    @echo off
    TITLE ETC Computer Solutions Recipe Install

    ECHO.
    ECHO Over the next few minutes you will see automated installations
    ECHO of various sofware applications. The computer will restart automatically
    ECHO once the whole process has finished!

    ECHO.
    ECHO Starting installation of Applications
    ECHO.
    ECHO Installing Lavasoft Ad-Aware 6 Build 181
    ECHO Please wait...
    IF NOT EXIST "%ProgramFiles%\Lavasoft\Ad-Aware SE Personal\Ad-Aware.exe" (
    start /wait aawsepersonal.exe /s
    ) ELSE (
    ECHO Skipping install
    )

    ECHO.
    ECHO Installing AVG Anti-Virus 7.1.782...
    start /wait avgsetup.exe /HIDE /DONT_START_APPS /NO_WELCOME /NO_AVGW_STARTUP /QUIT_IF_INSTALLED

    ECHO.
    ECHO Installing Mozilla Firefox
    ECHO Please wait...
    IF NOT EXIST "%ProgramFiles%\Mozilla Firefox\firefox.exe" (
    start /wait Firefox.exe -ms
    ) ELSE (
    ECHO Skipping install
    )

    EXIT

×
×
  • Create New...