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