Silent install Quick time for all users
I'am triying to install the last version of quick time 7.75.80.95; i installed the msi and i've done all modifications, after that i copied the file Quick Time.qtp in the msi but the file is not correctly copied, but when i copied the file. qtp manually in the LocalLow it works fine.
My questions are: there is any one who have a correct method to deploy this application? where we have to put exactelly the file QTP in installshield? there are others configurations to desactivate the updates? How to install it for all users?
Please Help me to found the correct method.
Thanks for all.
Answers (3)
Comments:
-
Thanks for your answer, i'm looking for more details - Asker 10 years ago
To create the MST, i copied the file 'quick time.qtp' in USERPROFILE\Appdata\LocalLow\Apple Computer\QuickTime ,but when i deploy the application, it is installed in c:\APPdata\LocalLow\Apple Computer\QuickTime.
where i've to put the QTP file in installshild to have it in c:\users\%username%\appdata\locallow\apple computer\quicktime ??
HELP!
Comments:
-
Let me have your email and I will send you a word document with all the necessary information - EdT 10 years ago
-
This is my adress mail: askera230@gmail.com
Thank you - Asker 10 years ago-
You have mail - EdT 10 years ago
-
Hi EdT, QuickTime is driving me bonkers. Could you send me the email also please? ChinoZ32 @ gmail dot com. Thank you! - chino 10 years ago
-
I'm sure it would be helpful to everyone coming to this site looking for how to silent install Quicktime the best way. Do you mind posting this word doc as a blog post or paste it directly to this post? Thanks. - bens401 9 years ago
QuickTime Player 7.7.4
1 Application / Package Information
Name | QuickTime Player |
Version | 7.74.80.86 |
Vendor | Apple Inc. |
Product Key(s) | N/A |
License Type | Freely downloadable from Apple with distribution agreement in place. |
Vendor’s Installation | Multiple msi files in self extracting EXE. |
WPS Project Process | (ICTST) Vendor’s MSI based package |
Package Type | 2 of vendors msi + transform on main QuickTime msi, called by GInstaller. |
Product Code(s) | AppleApplicationSupport.msi: {5D09C772-ECB3-442B-9CC6-B4341C78FDC2} QuickTime.msi: {B67BAFBA-4C9F-48FA-9496-933E3B255044}
|
Help Desk Incident # | #86614 |
GInstaller.vbs version | 2.9 |
Package / Installation Outline Notes | Requires installation of AppleApplicationSupport.msi and QuickTime.msi.
QuickTime774.mst configured to deliver the following customisations: - Custom QuickTime.qtp to uncheck as default: auto updates, show icon in system tray, notification of file type association changes. - Custom QTPlayerSession.xml to not display HotPicks at start-up. - Active Setup keys and UserSettingsCopy.vbs to ensure custom settings apply to all logging on users. - Remove all shortcuts except main program shortcut, and place it under Start / Programs / Accessories.
CopyPrefsToLoggedonUsersProfiles.vbs created to copy config files directly into the profile of any logged in accounts (also writes reg keys to prevent Active setup re-run).
Quicktime sample files for testing purposes: http://support.apple.com/kb/HT1425
|
2 Integration
2.1 Method
Tool(s) | Notepad, ORCA, Wise Package Studio
|
Shortcuts | Removed via QuickTime774.mst: Start / Programs / QuickTime / PictureViewer Start / Programs / QuickTime / Uninstall QuickTime Start / Programs / QuickTime / About QuickTime Start / Programs / QuickTime <folder> Desktop / QuickTime Player
Moved from: Start / Programs / QuickTime / QuickTime Player to: Start / Programs / Accessories / QuickTime Player
|
Registry Keys | Active Setup registry values applied via QuickTime774.mst:
[HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\QuickTime User] @=”[IT Services] QuickTime 7.7.4 User Settings” “Locale”=”EN” “StubPath”=”WScript.exe //B \"[INSTALLDIR]_ICTST_Custom\UserSettingsCopy.vbs\"” “Version”=”7,74,80,86”
|
Files | Vendor’s, plus custom files below (copied to [INSTALLDIR]\_ICTST_Custom):
QTPlayerSession.xml QuickTime.qtp UserSettingsCopy.vbs
|
|
|
Custom ini, xml, Config Files |
NOTE: The AppleApplicationSupport.msi can return 1603 if a newer version is installed. This can happen if a user has installed the latest version of iTunes. For this reason, 1603 is entered as a successful return code in the GInstaller.ini.
|
Method |
Vendor compressed .exe downloaded from http://www.apple.com/uk/quicktime/download/. QuickTime.msi and AppleApplicationSupport.msi extracted using 7zip.
QuickTime774.mst created with the following customisations:
New Feature: ICTST_Custom made parent of QuickTimeEssentials
Components: ICTST_ActiveSetup and ICTST_UserPrefs
Custom Action: ICTST_CustomUserPrefs – Condition: NOT REMOVE=”ALL” – placed just before InstallFinalize in deferred sequence. This action runs the script to copy into place the custom config files for the installing user.
QuickTime shortcut moved under Accessories so that it does not clog up the Start / Programs menu as very few people actually start QuickTime from the program icon.
The above is saved then the package installed using the new MST and configuration files from the previous package to capture the updated user files below:
Generation of custom config files QuickTime.qtp and QTPlayerSession.xml:
- Edit / Preferences / Player Preferences: General Tab: Untick 'Show Content Guide at startup' and click OK. - Edit / Preferences / QuickTime Preferences: Update tab: Untick ‘Check for updates automatically’. File Types tab: Untick 'Notify me if other applications modify these associations'. Advanced tab: Untick ‘Install QuickTime icon in system tray’ and click OK.
Active Setup runs UserSettingsCopy.vbs to copy in the custom config files above to keep login fast – previous packages that performed an MSI repair at logon via Active Setup took over 30 seconds to complete. Now it is less than one second.
The script CopyPrefsToLoggedOnUsersProfiles.vbs is included to further avoid unnecessary Active Setup operations by copying the configuration files to the profile(s) of any logged on user(s). It detects which OS Architecture is in use and copies the config files to the relevant locations under the users profile.
|
2.2 Deployment
2.2.1 Command Line(s)
|
|
Uninstall | QuickTime: Msiexec /x {B67BAFBA-4C9F-48FA-9496-933E3B255044}
Apple Application Support (Note this is also required by iTunes): Msiexec /x {5D09C772-ECB3-442B-9CC6-B4341C78FDC2}
|
|
|
|
|
APPENDIXIV - CopyPrefsToLoggedOnUsersProfiles.vbs
'# EdT 18/06/2012 based on iTunes scriptby D.Collins - 13:24 14/10/2011
'# EdT updated 05/03/2013 for 64 bitsupport
'# Copies 2 x Quicktime config files intologged on users profiles
'# PhilW updated 24/05/2013 for Quicktime7.74.80.86
'# D.Collins - 17:08 29/05/2013 -QuickTime-specific x64 fixes
Option Explicit
'________________________________________________________________________________
' Setup Error Handler
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
'# Error Exception Handler.
Class QuitErrorlevelOnRuntimeError
Private Sub Class_Terminate()
'# If Err.Number = 0 Then wscript.quit will return -2147155971.
'# If the script just ends with no WScript.Quit, Err.Number will = 0
If Err.Number <> -2147155971 And Err.Number <> 0 Then
Set wshShell =CreateObject("WScript.Shell")
wshShell.LogEvent 1, "FATAL ERROR- Fatal error in '" & WScript.ScriptFullName & "'process. Error " & Err.Number& " - " & Err.Source & " - " &Err.Description
WScript.Quit Err.Number
End If
End Sub
End Class
Dim wshShell, qeloreObj : Set qeloreObj =New QuitErrorlevelOnRuntimeError
'________________________________________________________________________________
' Main Script
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG =&H80000005
Dim fso, strLog, objReg, strKeyPath,arrSubKeys, arrSIDList, strSIDList, strSID, strPath, strPathList, arrPathList,arrKeys, strKey
Dim strSourcePath, strPath1, strPath2,bits
Set wshShell =CreateObject("WScript.Shell")
Set fso =CreateObject("Scripting.FileSystemObject")
bits = CSI_GetBitness("OS")
strLog =wshShell.ExpandEnvironmentStrings("%LOG_FILE%")
If bits = 999 Then
WLog Now() & " - ERROR: CSI_GetBitness function in script'" & WScript.ScriptName & "' returned 999 - prefs notcopied"
WScript.Quit 114015
End If
Set objReg =GetObject("winmgmts:{impersonationLevel = impersonate}!\\.\root\default:StdRegProv")
objReg.EnumKey HKEY_USERS, "",arrSubKeys
If IsNull(arrSubKeys) Then
'# Nothing found under HKU
WLog Now() & " - ERROR: No Reg Keys found under HKU"
WScript.Quit 114001
End If
strSIDList = ""
For Each strKey In arrSubKeys
If Left(strKey, 8) = "S-1-5-21" And Right(strKey, 8) <>"_Classes" Then
strSIDList = strSIDList & strKey & "|"
End If
Next
'# MsgBox strSIDList
If strSIDList = "" Then
'# No logged on profiles found
WLog Now() & " - No Logged on user profiles found."
WScript.Quit 0
End If
strKeyPath ="SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objReg.EnumKey HKEY_LOCAL_MACHINE,strKeyPath, arrSubKeys
If IsNull(arrSubKeys) Then
'# Nothing found under HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList
WLog Now() & " - ERROR: No Reg Keys found underHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
WScript.Quit 114001
End If
arrSIDList = Split(strSIDList,"|")
strPathList = ""
For Each strKey In arrSubKeys
For Each strSID In arrSIDList
If strKey <> "" And strKey = strSID Then
'# Msgbox "Match found -looking in: " & strKeyPath & "\" & strKey
'# Found a SID match, now collectthe profile path
objReg.GetExpandedStringValueHKEY_LOCAL_MACHINE, strKeyPath & "\" & strKey,"ProfileImagePath", strPath
strPathList = strPathList &strPath & "|"
End If
Next
Next
If strPathList = "" Then
'# No logged on profiles found
WLog Now() & " - No Logged on user profile paths found,although logged on user SID's *were* found."
WScript.Quit 0
End If
'# MsgBox strPathList
If bits=32 then strSourcePath =wshShell.ExpandEnvironmentStrings("%ProgramFiles%\QuickTime\_ICTST_Custom\")
If bits=64 then strSourcePath =wshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%\QuickTime\_ICTST_Custom\")
If Not fso.FolderExists(strSourcePath)Then
WLog Now() & " - ERROR: QuickTimePrefs.xml source path notfound: " & strSourcePath
WScript.Quit 114019
End If
arrPathList = Split(strPathList,"|")
For Each strPath In arrPathList
If strPath = "" Then Exit For
If bits = 32 Then
strPath1 = strPath & "\Application Data\AppleComputer\QuickTime"
strPath2 = strPath & "\Local Settings\Application Data\AppleComputer\QuickTime"
Else
strPath1 = strPath & "\AppData\Local\AppleComputer\QuickTime"
strPath2 = strPath & "\AppData\LocalLow\AppleComputer\QuickTime"
End If
On Error Resume Next
MakeDir(strPath1)
MakeDir(strPath2)
On Error Goto 0
WLog Now() & " - Executing Copy of QuickTime prefs FROM:'" & strSourcePath & "QTPlayerSession.xml' TO: '" &strPath1 & "\QTPlayerSession.xml'"
fso.CopyFile strSourcePath & "QTPlayerSession.xml",strPath1 & "\QTPlayerSession.xml"
WLog Now() & " - Executing Copy of QuickTime prefs FROM:'" & strSourcePath & "QuickTime.qtp' TO: '" &strPath2 & "\QuickTime.qtp'"
fso.CopyFile strSourcePath & "QuickTime.qtp", strPath2& "\QuickTime.qtp"
Next
'# Now write reg value to prevent ActiveSetup rerunning the Copy for the logged on users.
For Each strSID In arrSIDList
If strSID = "" Then Exit For
Ifbits=32 then
objReg.CreateKey HKEY_USERS, strSID &"\Software\Microsoft\Active Setup\Installed Components\QuickTimeUser"
objReg.SetStringValue HKEY_USERS, strSID &"\Software\Microsoft\Active Setup\Installed Components\QuickTimeUser", "Locale", "EN"
objReg.SetStringValue HKEY_USERS, strSID &"\Software\Microsoft\Active Setup\Installed Components\QuickTimeUser", "Version", "7,74,80,86"
ElseIfbits=64 then
objReg.CreateKeyHKEY_USERS, strSID & "\Software\Wow6432Node\Microsoft\ActiveSetup\Installed Components\QuickTime User"
objReg.SetStringValue HKEY_USERS, strSID & "\Software\Wow6432Node\Microsoft\ActiveSetup\Installed Components\QuickTime User", "Locale","EN"
objReg.SetStringValue HKEY_USERS, strSID &"\Software\Wow6432Node\Microsoft\Active Setup\InstalledComponents\QuickTime User", "Version", "7,74,80,86"
End If
Next
'________________________________________________________________________________
' Subs & Functions
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sub WLog(sTxt)
Dim ts, sErrTxt
On Error Resume Next
Set ts = fso.OpenTextFile(strLog, 8, True)
ts.WriteLine sTxt
ts.Close
If Err.Number Then
If Not fso.FileExists(strLog) Then
sErrTxt = WScript.ScriptName &" - ERROR: Unable to write to log file '" & strLog & "'- Error " & Err.Number & " - " & Err.Description& vbCrlf & vbCrlf & "Log Entry: " & sTxt
wshShell.LogEvent 1, sErrTxt
WScript.Quit 114031
End If
WScript.Sleep 100
Wlog(sTxt)
End If
On Error Goto 0
Set ts = Nothing
End Sub
Function CSI_GetBitness(Target)
'CSI_GetBitness Function - updates athttp://csi-windows.com.
' All bitness checks in one function
Select Case Ucase(Target)
Case "OS", "WINDOWS", "OPERATING SYSTEM"
CSI_GetBitness = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
Case "HW", "HARDWARE"
CSI_GetBitness =GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").DataWidth
Case "PROCESS", "PROC"
'One liner to retrieve process architecture string which will reveal ifrunning in 32bit subsystem
ProcessArch =CreateObject("WScript.Shell").Environment("Process")("PROCESSOR_ARCHITECTURE")
If lcase(ProcessArch) = "x86" Then
CSI_GetBitness = 32
Else
Ifinstr(1,"AMD64,IA64",ProcessArch,1) > 0 Then
CSI_GetBitness = 64
Else
CSI_GetBitness = 0 'unknown processor architecture
End If
End If
Case Else
CSI_GetBitness = 999 'unknown Target item (OS, Hardware, Process)
End Select
End Function
Sub MakeDir(dir)
Dim sTxt
If Not fso.FolderExists(dir) Then
wshShell.Run "cmd /c MD """ & dir &"""", 0, True
End If
If Not fso.FolderExists(dir) Then
sTxt = "ERROR: unable to create directory: " & dir
WLog Now() & " - " & sTxt
End If
End Sub
APPENDIX V – UserSettingsCopy.vbs
'#EdT 18/06/2012 based on script by D.Collins - 17:11 19/07/2010
'#D.Collins - 16:36 29/05/2013 - Amended to make x64 compliant.
'#Copies to the user profile: QuickTime.qtp and QTPlayerSession.xml.
'#Designed to run from Active Setup - much quicker than using the msi self-repairvia active setup.
SetwshShell = CreateObject("WScript.Shell")
Setfso = CreateObject("Scripting.FileSystemObject")
'#Get OS Architecture
blTestArch= (wshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%") ="%ProgramFiles(x86)%") '#Note, if this var is populated, then this must be an x64 OS.
strOSArch= "x64"
IfblTestArch = True Then strOSArch = "x86"
strUserProfile =wshShell.ExpandEnvironmentStrings("%USERPROFILE%")
'#Set up architecture-specific variables
IfstrOSArch = "x64" Then
strProgramFiles =wshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
strTarget1 = wshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%\AppleComputer\QuickTime\")
strTarget2 = strUserProfile &"\AppData\LocalLow\Apple Computer\QuickTime\"
Else
strProgramFiles =wshShell.ExpandEnvironmentStrings("%ProgramFiles%")
strTarget1 = strUserProfile &"\Application Data\Apple Computer\QuickTime\"
strTarget2 = strUserProfile &"\Local Settings\Application Data\Apple Computer\QuickTime\"
EndIf
MakeDir(strTarget1)
MakeDir(strTarget2)
fso.CopyFilestrProgramFiles & "\QuickTime\_ICTST_Custom\QTPlayerSession.xml",strTarget1
fso.CopyFilestrProgramFiles & "\QuickTime\_ICTST_Custom\QuickTime.qtp",strTarget2
SubMakeDir(sDir)
If Not fso.FolderExists(sDir) Then
wshShell.Run "cmd /c MD""" & sDir & """", 0, True
End If
EndSub