Leaderboard
Popular Content
Showing content with the highest reputation on 06/29/2014 in all areas
-
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 Function1 point