Info: Microsoft Visual C++ 2005/2008/2010/2012/2013/2014/2015, Microsoft Visual F# 2.0, Microsoft Visual J# 2.0 redistributable packages (with setup junk removed.) Also includes "extra" Visual Basic and C runtimes (see list bellow)
Same as above but excludes F# & J# runtimes
Info: Microsoft Visual C++ 2005/2008/2010/2012/2013 redistributable packages (with setup junk removed.) Also includes "extra" Visual Basic and C runtimes (see list bellow)
Some tools and resources for (re)creating your own installer
Visual AIO SFX Maker v6 (installer repacker):http://adf.ly/1713566/visualsfxSilent "No GUI" SFX alternative v4:http://adf.ly/1713566/visualsfxngKB2538242 MST Windows Update fix v1.7:http://adf.ly/1713566/wufix5mstKB2538243 MST Windows Update fix v3:http://adf.ly/1713566/wufix8mstMsiTran.Exe -a <transform>.MST <installer>.MSI:http://adf.ly/1713566/msitranSlim down your vcredist 2005/2008 installers:http://adf.ly/1713566/msislim"Extra" Visual Basic/C runtimes installer sourceshttp://adf.ly/1713566/vbcsourceIf you cant find a hotfix try using the KB number w/ this URLhttp://support2.microsoft.com/hotfix/KBHotfix.aspx?kbnum=1234567
Hotfix list
About: This is the business version of Skype MSI so by default it has no junk!
Tweaked: Shortcut moved out of sub folder into All Programs, Run on Windows startup removed, Run after standard GUI install removed
Differences between Skype installers:
VBS Editor Script
Option Explicit
Dim ws, installer, fs, db, view, record, x
Set ws = WScript.CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set installer = WScript.CreateObject("WindowsInstaller.Installer")
If WScript.Arguments.Count <> 0 Then
For each x in WScript.Arguments
ProcessMSI x
Next
Else
If fs.FileExists("SkypeSetup.msi") Then ProcessMSI "SkypeSetup.msi"
End If
'**********************************************************************
'** Function; Query MSI database **
'**********************************************************************
Function QueryDatabase(arrOpts)
On Error Resume Next
Dim query, file, binary : binary = false
If LCase(TypeName(arrOpts)) = "string" Then
query = arrOpts
Else
If fs.FileExists(arrOpts(0)) Then
file = arrOpts(0)
query = arrOpts(1)
Else
query = arrOpts(0)
file = arrOpts(1)
End If
binary = true
End If
WScript.Echo query
If binary Then
Set record = installer.CreateRecord(1)
record.SetStream 1, file
End If
Set view = db.OpenView (query) : CheckError
If binary Then
view.Execute record : CheckError
Else
view.Execute : CheckError
End If
view.close
Set view = nothing
If binary Then Set record = nothing
binary = false
db.commit : CheckError
End Function
'**********************************************************************
'** Subroutine; Check errors in most recently executed MSI command **
'**********************************************************************
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
End If
Wscript.Echo "" : Wscript.Echo message : Wscript.Echo ""
Wscript.Quit 2
End Sub
'**********************************************************************
'** Function; Push changes to MSI **
'**********************************************************************
Function ProcessMSI(file)
Set db = installer.OpenDatabase(file, 1)
On Error Resume Next
QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `AdvtExecuteSequence` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'UpdaterFolder'")
QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'SkypeStart1'")
QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'SkypeStart2'")
QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'SkypeUpdaterCleanup'")
QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'SkypeUpdaterConfig'")
QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'SystemFolder'")
QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'UpdaterFolder'")
QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Updater'")
QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Component_` = 'C_CENTRAL_msvcp120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Component_` = 'C_CENTRAL_msvcr120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Component_` = 'C_CENTRAL_vccorlib120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Updater'")
QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'C_CENTRAL_msvcp120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'C_CENTRAL_msvcr120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'C_CENTRAL_vccorlib120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SkypeUpdater'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'DeleteServices'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'InstallServices'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'SkypeUpdaterCleanup'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'SkypeUpdaterConfig'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'StartServices'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'StopServices'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'SystemFolder_x86_VC.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'SkypeStart1'")
QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'SkypeStart2'")
QueryDatabase("DELETE FROM `ModuleComponents` WHERE `Component` = 'C_CENTRAL_msvcp120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `ModuleComponents` WHERE `Component` = 'C_CENTRAL_msvcr120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `ModuleComponents` WHERE `Component` = 'C_CENTRAL_vccorlib120_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `ModuleSignature` WHERE `ModuleID` = 'Microsoft_VC120_CRT_x86.194841A2_D0F2_3B96_9F71_05BA91BEA0FA'")
QueryDatabase("DELETE FROM `MsiShortcutProperty` WHERE `Shortcut_` = 'SkypeDesktopShortcut'")
QueryDatabase("DELETE FROM `Property` WHERE `Value` = 'DirectoryTable'")
QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'SkypeUpdater'")
' QueryDatabase("DELETE FROM `Registry` WHERE `Key` = 'Software\Microsoft\Windows\CurrentVersion\Run'")
' QueryDatabase("DELETE FROM `ServiceControl`")
' QueryDatabase("DELETE FROM `ServiceInstall`")
QueryDatabase("DELETE FROM `Shortcut` WHERE `Shortcut` = 'SkypeDesktopShortcut'")
QueryDatabase("INSERT INTO `Component` (`Component`,`ComponentId`,`Directory_`,`Attributes`,`Condition`,`KeyPath`) VALUES ('SkypeRegistryRun','{7D53301D-E4F0-403A-9A1C-876F1544939E}','PhoneFolder','4','RUN = 1','reg08D3E7E5CD85CB55680CCDE42A2E2625')")
QueryDatabase("INSERT INTO `Control` (`Dialog_`,`Control`,`Type`,`X`,`Y`,`Width`,`Height`,`Attributes`,`Property`,`Text`,`Control_Next`) VALUES ('InstallDirDlg','Run','CheckBox','20','140','370','18','19','RUN','&Start Skype when I start Windows','Next')")
QueryDatabase("INSERT INTO `FeatureComponents` (`Feature_`,`Component_`) VALUES ('Phone','SkypeRegistryRun')")
QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('LicenseAccepted','1')")
QueryDatabase("UPDATE `Shortcut` SET Directory_ = 'ProgramMenuFolder' WHERE `Directory_` = 'ProgramMenuDir'")
QueryDatabase("UPDATE `Registry` SET Component_ = 'SkypeRegistryRun' WHERE `Registry` = 'reg08D3E7E5CD85CB55680CCDE42A2E2625'")
QueryDatabase("UPDATE `Control` SET Control_Next = 'Run' WHERE `Control` = 'ChangeFolder'")
Set db = nothing
End Function
You have to remember, there are actually 5 "separate" images in the WIM. Those images are reduced in size only because the files are reduced to only 1 copy. In other words, if you have 5 versions of the same kernel.dll, then one 1 file is reference by all 5 images. You can rebuild the WIM, however it can only reduce the size if there are the same files on each image. It might also do a mild recompression at the same time, but I am not sure on this one. This "hi" and "bye" is probably a result of test code put in there by Legolash2o at the time of importing the registry settings. You may want to make a comment to him on that. Yes. The install setup does wait. However, there is also an option in W7T that you can set on the installers of "not always installed". This just means W7T will ask you at the beginning of the installer section which ones you want to run. FYI, SoLoR Updates do have IE9 and "XP Mode". You just have to go the specific directories to get them. There is a specific updated installer for IE9 that includes all of the latest updates. You may have to look around for the correct one as I believe solar has include the "zeroth" version. There is an up to date one that I use. Yes, there is a tab for that in the AIO button under W7T. It is not a bug. The "off-line" registry is likely loaded to that spot in the current registry. The modifications are made to loaded "off-line" registry and then unloaded. (Also the result of the "hi" and "bye" issue noted.) Edit: I forgot to mention, it does not matter where the IE9 update gets added. Beginning or end, it works just the same. (FYI, I have tried both. It does not matter)