├── .gitattributes ├── 7zSFX.cmd ├── BIN ├── 7z-License.txt ├── 7z.dll ├── 7z.exe ├── 7zSFX │ ├── 7zSD.sfx │ ├── 7zSD_drag-drop_7z.bat │ └── config.txt ├── 7zSFXLP │ ├── 7zSD_drag-drop_7z.bat │ ├── 7zSDm.sfx │ └── config.txt └── NDP │ ├── DisplayIcon.ico │ ├── LP │ ├── DisplayIcon.ico │ ├── slimARA.vbs │ ├── slimCHS.vbs │ ├── slimCHT.vbs │ ├── slimCSY.vbs │ ├── slimDAN.vbs │ ├── slimDEU.vbs │ ├── slimELL.vbs │ ├── slimESN.vbs │ ├── slimFIN.vbs │ ├── slimFRA.vbs │ ├── slimHEB.vbs │ ├── slimHUN.vbs │ ├── slimITA.vbs │ ├── slimJPN.vbs │ ├── slimKOR.vbs │ ├── slimNLD.vbs │ ├── slimNOR.vbs │ ├── slimPLK.vbs │ ├── slimPTB.vbs │ ├── slimPTG.vbs │ ├── slimRUS.vbs │ ├── slimSVE.vbs │ └── slimTRK.vbs │ ├── WiFilVer.vbs │ ├── WiMakCab.vbs │ ├── WiSumInf.vbs │ ├── netfx.xsl │ ├── showmsp.vbs │ └── slim.vbs ├── LICENSE ├── LP ├── .README └── NDP452-KB2901983.txt ├── README.md ├── dotNetFx452.cmd └── dotNetFx452LP.cmd /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /7zSFX.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d "%~dp0" 3 | if not exist "BIN\7z.exe" ( 4 | echo ==== ERROR ==== 5 | echo Required binary files are missing. 6 | echo. 7 | echo Press any key to exit... 8 | pause >nul 9 | goto :eof 10 | ) 11 | if not exist "BIN\7zSFX\*.sfx" ( 12 | echo ==== ERROR ==== 13 | echo Required SFX module is missing. 14 | echo. 15 | echo Press any key to exit... 16 | pause >nul 17 | goto :eof 18 | ) 19 | for /f %%a in ('dir /b /ad .\NDP4* 2^>nul') do if exist "%%a\*.msi" ( 20 | set "_src=%%a" 21 | ) 22 | if not defined _src ( 23 | echo ==== ERROR ==== 24 | echo NDP directory is not detected. 25 | echo. 26 | echo Press any key to exit... 27 | pause >nul 28 | goto :eof 29 | ) 30 | echo. 31 | echo Create 7z archive . . . 32 | echo. 33 | attrib -A %_src%\* /S /D 34 | BIN\7z.exe a %_src%.7z .\%_src%\* -mqs -mx -m0=BCJ2 -m1=LZMA:d26 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 -bso0 35 | echo. 36 | echo Create 7z SFX . . . 37 | echo. 38 | if /i "%_src:~-2%"=="LP" ( 39 | copy /b BIN\7zSFXLP\7zSDm.sfx + BIN\7zSFXLP\config.txt + %_src%.7z %_src%-Slim-x86-x64-INTL.exe >nul 40 | ) else ( 41 | copy /b BIN\7zSFX\7zSD.sfx + BIN\7zSFX\config.txt + %_src%.7z %_src%-Slim-x86-x64-ENU.exe >nul 42 | ) 43 | del /f /q %_src%.7z >nul 44 | echo. 45 | echo Done. 46 | echo Press any key to exit. 47 | pause >nul 48 | goto :eof 49 | -------------------------------------------------------------------------------- /BIN/7z-License.txt: -------------------------------------------------------------------------------- 1 | 7-Zip 2 | ~~~~~ 3 | License for use and distribution 4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | 7-Zip Copyright (C) 1999-2018 Igor Pavlov. 7 | 8 | The licenses for files are: 9 | 10 | 1) 7z.dll: 11 | - The "GNU LGPL" as main license for most of the code 12 | - The "GNU LGPL" with "unRAR license restriction" for some code 13 | - The "BSD 3-clause License" for some code 14 | 2) All other files: the "GNU LGPL". 15 | 16 | Redistributions in binary form must reproduce related license information from this file. 17 | 18 | Note: 19 | You can use 7-Zip on any computer, including a computer in a commercial 20 | organization. You don't need to register or pay for 7-Zip. 21 | 22 | 23 | GNU LGPL information 24 | -------------------- 25 | 26 | This library is free software; you can redistribute it and/or 27 | modify it under the terms of the GNU Lesser General Public 28 | License as published by the Free Software Foundation; either 29 | version 2.1 of the License, or (at your option) any later version. 30 | 31 | This library is distributed in the hope that it will be useful, 32 | but WITHOUT ANY WARRANTY; without even the implied warranty of 33 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 34 | Lesser General Public License for more details. 35 | 36 | You can receive a copy of the GNU Lesser General Public License from 37 | http://www.gnu.org/ 38 | 39 | 40 | 41 | 42 | BSD 3-clause License 43 | -------------------- 44 | 45 | The "BSD 3-clause License" is used for the code in 7z.dll that implements LZFSE data decompression. 46 | That code was derived from the code in the "LZFSE compression library" developed by Apple Inc, 47 | that also uses the "BSD 3-clause License": 48 | 49 | ---- 50 | Copyright (c) 2015-2016, Apple Inc. All rights reserved. 51 | 52 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 53 | 54 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 55 | 56 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer 57 | in the documentation and/or other materials provided with the distribution. 58 | 59 | 3. Neither the name of the copyright holder(s) nor the names of any contributors may be used to endorse or promote products derived 60 | from this software without specific prior written permission. 61 | 62 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 63 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 64 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 65 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 66 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 67 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 68 | ---- 69 | 70 | 71 | 72 | 73 | unRAR license restriction 74 | ------------------------- 75 | 76 | The decompression engine for RAR archives was developed using source 77 | code of unRAR program. 78 | All copyrights to original unRAR code are owned by Alexander Roshal. 79 | 80 | The license for original unRAR code has the following restriction: 81 | 82 | The unRAR sources cannot be used to re-create the RAR compression algorithm, 83 | which is proprietary. Distribution of modified unRAR sources in separate form 84 | or as a part of other software is permitted, provided that it is clearly 85 | stated in the documentation and source comments that the code may 86 | not be used to develop a RAR (WinRAR) compatible archiver. 87 | 88 | 89 | -- 90 | Igor Pavlov 91 | -------------------------------------------------------------------------------- /BIN/7z.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/7z.dll -------------------------------------------------------------------------------- /BIN/7z.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/7z.exe -------------------------------------------------------------------------------- /BIN/7zSFX/7zSD.sfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/7zSFX/7zSD.sfx -------------------------------------------------------------------------------- /BIN/7zSFX/7zSD_drag-drop_7z.bat: -------------------------------------------------------------------------------- 1 | @copy /b "%~dp17zSD.sfx" + "%~dp1config.txt" + %1 "%~dpn1.exe" -------------------------------------------------------------------------------- /BIN/7zSFXLP/7zSD_drag-drop_7z.bat: -------------------------------------------------------------------------------- 1 | @copy /b "%~dp17zSDm.sfx" + "%~dp1config.txt" + %1 "%~dpn1.exe" -------------------------------------------------------------------------------- /BIN/7zSFXLP/7zSDm.sfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/7zSFXLP/7zSDm.sfx -------------------------------------------------------------------------------- /BIN/NDP/DisplayIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/NDP/DisplayIcon.ico -------------------------------------------------------------------------------- /BIN/NDP/LP/DisplayIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/d929ac887d7c9c6d086b543a8107ae41d10006fb/BIN/NDP/LP/DisplayIcon.ico -------------------------------------------------------------------------------- /BIN/NDP/LP/slimARA.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_ara'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_ara'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_ara'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_ara'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_ara'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_ara'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_ara'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_ara'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_ara'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_ara'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_ara'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_ara'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1025.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_ara.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_ara_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_ara_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimCHS.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_chs'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_chs'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_chs'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_chs'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_chs'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_chs'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_chs'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_chs'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_chs'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_chs'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_chs'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_chs'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.2052.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_chs.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_chs_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_chs_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimCHT.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_cht'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_cht'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_cht'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_cht'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_cht'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_cht'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_cht'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_cht'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_cht'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_cht'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_cht'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_cht'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1028.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_cht.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_cht_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_cht_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimCSY.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_csy'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_csy'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_csy'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_csy'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_csy'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_csy'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_csy'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_csy'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_csy'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_csy'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_csy'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_csy'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1029.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_csy.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_csy_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_csy_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimDAN.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_dan'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_dan'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_dan'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_dan'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_dan'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_dan'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_dan'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_dan'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_dan'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_dan'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_dan'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_dan'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1030.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_dan.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_dan_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_dan_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimDEU.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_deu'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_deu'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_deu'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_deu'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_deu'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_deu'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_deu'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_deu'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_deu'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_deu'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_deu'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_deu'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1031.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_deu.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_deu_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_deu_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimELL.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_ell'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_ell'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_ell'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_ell'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_ell'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_ell'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_ell'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_ell'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_ell'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_ell'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_ell'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_ell'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1032.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_ell.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_ell_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_ell_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimESN.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_esn'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_esn'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_esn'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_esn'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_esn'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_esn'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_esn'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_esn'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_esn'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_esn'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_esn'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_esn'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.3082.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_esn.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_esn_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_esn_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimFIN.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_fin'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_fin'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_fin'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_fin'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_fin'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_fin'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_fin'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_fin'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_fin'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_fin'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_fin'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_fin'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1035.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_fin.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_fin_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_fin_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimFRA.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_fra'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_fra'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_fra'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_fra'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_fra'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_fra'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_fra'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_fra'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_fra'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_fra'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_fra'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_fra'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1036.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_fra.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_fra_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_fra_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimHEB.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_heb'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_heb'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_heb'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_heb'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_heb'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_heb'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_heb'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_heb'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_heb'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_heb'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_heb'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_heb'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1037.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_heb.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_heb_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_heb_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimHUN.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_hun'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_hun'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_hun'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_hun'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_hun'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_hun'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_hun'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_hun'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_hun'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_hun'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_hun'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_hun'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1038.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_hun.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_hun_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_hun_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimITA.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_ita'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_ita'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_ita'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_ita'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_ita'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_ita'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_ita'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_ita'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_ita'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_ita'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_ita'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_ita'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1040.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_ita.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_ita_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_ita_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/LP/slimJPN.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' - Make sure netfx*.msi and DisplayIcon.ico are in the same directory as this file before running: 4 | ' 5 | ' cscript .vbs 6 | ' 7 | ' - Create administrative install to leave the setup files behind: 8 | ' 9 | ' msiexec /a .msi TARGETDIR= 10 | ' 11 | ' script by dumpydooby (modded by ricktendo64) 12 | Option Explicit 13 | Dim ws, installer, fs, db, view, record, x 14 | Set ws = WScript.CreateObject("WScript.Shell") 15 | Set fs = CreateObject("Scripting.FileSystemObject") 16 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 17 | If WScript.Arguments.Count <> 0 Then 18 | For each x in WScript.Arguments 19 | ProcessMSI x 20 | Next 21 | Else 22 | If fs.FileExists("netfx_FullLP_x64.msi") Then ProcessMSI "netfx_FullLP_x64.msi" 23 | If fs.FileExists("netfx_FullLP_x86.msi") Then ProcessMSI "netfx_FullLP_x86.msi" 24 | If fs.FileExists("netfx_FullLP_GDR_x64.msi") Then ProcessMSI "netfx_FullLP_GDR_x64.msi" 25 | If fs.FileExists("netfx_FullLP_GDR_x86.msi") Then ProcessMSI "netfx_FullLP_GDR_x86.msi" 26 | If fs.FileExists("netfx_FullLP_LDR_x64.msi") Then ProcessMSI "netfx_FullLP_LDR_x64.msi" 27 | If fs.FileExists("netfx_FullLP_LDR_x86.msi") Then ProcessMSI "netfx_FullLP_LDR_x86.msi" 28 | End If 29 | '********************************************************************** 30 | '** Function; Query MSI database ** 31 | '********************************************************************** 32 | Function QueryDatabase(arrOpts) 33 | On Error Resume Next 34 | Dim query, file, binary : binary = false 35 | If LCase(TypeName(arrOpts)) = "string" Then 36 | query = arrOpts 37 | Else 38 | If fs.FileExists(arrOpts(0)) Then 39 | file = arrOpts(0) 40 | query = arrOpts(1) 41 | Else 42 | query = arrOpts(0) 43 | file = arrOpts(1) 44 | End If 45 | binary = true 46 | End If 47 | WScript.Echo query 48 | If binary Then 49 | Set record = installer.CreateRecord(1) 50 | record.SetStream 1, file 51 | End If 52 | Set view = db.OpenView (query) : CheckError 53 | If binary Then 54 | view.Execute record : CheckError 55 | Else 56 | view.Execute : CheckError 57 | End If 58 | view.close 59 | Set view = nothing 60 | If binary Then Set record = nothing 61 | binary = false 62 | db.commit : CheckError 63 | End Function 64 | '********************************************************************** 65 | '** Subroutine; Check errors in most recently executed MSI command ** 66 | '********************************************************************** 67 | Sub CheckError 68 | Dim message, errRec 69 | If Err = 0 Then Exit Sub 70 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 71 | If Not installer Is Nothing Then 72 | Set errRec = installer.LastErrorRecord 73 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 74 | End If 75 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 76 | Wscript.Quit 2 77 | End Sub 78 | '********************************************************************** 79 | '** Function; Push changes to MSI ** 80 | '********************************************************************** 81 | Function ProcessMSI(file) 82 | Set db = installer.OpenDatabase(file, 1) 83 | On Error Resume Next 84 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'IdentityCacheDir'") 85 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_IdentityCacheDir_Graphics'") 86 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_enu'") 87 | QueryDatabase("DELETE FROM `Component` WHERE `Directory_` = 'NetFx_Installer_ResourcesDir_jpn'") 88 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_Resources_jpn'") 89 | QueryDatabase("DELETE FROM `Component` WHERE `Component` = 'NetFxRepair_exe'") 90 | QueryDatabase("DELETE FROM `CreateFolder` WHERE `Directory_` = 'IdentityCacheDir'") 91 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'IdentityCacheDir'") 92 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_amd64_IronSetupCache'") 93 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Framework_x86_IronSetupCache'") 94 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_amd64_IronSetupCache'") 95 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'FrameworkSetupCache_x86_IronSetupCache'") 96 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_amd64'") 97 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'Microsoft.NET_IronSetupCache_x86'") 98 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_amd64'") 99 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory` = 'WindowsFolder_IronSetupCache_x86'") 100 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_amd64_IronSetupCache'") 101 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'Framework_x86_IronSetupCache'") 102 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_amd64_IronSetupCache'") 103 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkSetupCache_x86_IronSetupCache'") 104 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_amd64_IronSetupCache'") 105 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'FrameworkVersionFolder_x86_IronSetupCache'") 106 | QueryDatabase("DELETE FROM `Directory` WHERE `Directory_Parent` = 'IdentityCacheDir'") 107 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 108 | QueryDatabase("DELETE FROM `AdminExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 109 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 110 | QueryDatabase("DELETE FROM `AdminUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 111 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 112 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 113 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_CompressSetupCache'") 114 | QueryDatabase("DELETE FROM `CustomAction` WHERE `Action` = 'CA_SetCompressSetupCache'") 115 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 116 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 117 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_CompressSetupCache'") 118 | QueryDatabase("DELETE FROM `InstallExecuteSequence` WHERE `Action` = 'CA_SetCompressSetupCache'") 119 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_amd64'") 120 | QueryDatabase("DELETE FROM `InstallUISequence` WHERE `Action` = 'CA_WindowsFolder_IronSetupCache_x86'") 121 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'F_Installer_IdentityARP'") 122 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_amd64_jpn'") 123 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'MSICache_FullLP_x86_jpn'") 124 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'NetFx_Installer_Setup_ddf'") 125 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_NetFxRepair'") 126 | QueryDatabase("DELETE FROM `FeatureComponents` WHERE `Feature_` = 'Netfx_SetupUtility'") 127 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'F_Installer_IdentityARP'") 128 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_amd64_jpn'") 129 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'MSICache_FullLP_x86_jpn'") 130 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'NetFx_Installer_Setup_ddf'") 131 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_NetFxRepair'") 132 | QueryDatabase("DELETE FROM `Feature` WHERE `Feature` = 'Netfx_SetupUtility'") 133 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_amd64_jpn'") 134 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'Installer_MSICache_FullLP_x86_jpn'") 135 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Core'") 136 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Customizable'") 137 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_enu'") 138 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_EULAs_jpn'") 139 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Graphics'") 140 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_enu'") 141 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_LocalizedData_jpn'") 142 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_ParameterInfo'") 143 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_enu'") 144 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFx_Installer_Resources_jpn'") 145 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_exe'") 146 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'NetFxRepair_Resources_jpn'") 147 | QueryDatabase("DELETE FROM `File` WHERE `Component_` = 'SetupUtility_exe'") 148 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1033.rtf'") 149 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'eula.1041.rtf'") 150 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DHtmlHeader.html'") 151 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_DisplayIcon.ico'") 152 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_header.bmp'") 153 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_enu.xml'") 154 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_LocalizedData_jpn.xml'") 155 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Print.ico'") 156 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate1.ico'") 157 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate2.ico'") 158 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate3.ico'") 159 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate4.ico'") 160 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate5.ico'") 161 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate6.ico'") 162 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate7.ico'") 163 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Rotate8.ico'") 164 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Save.ico'") 165 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Setup.ico'") 166 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SetupUi.xsd'") 167 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SplashScreen.bmp'") 168 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_stop.ico'") 169 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_Strings.xml'") 170 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqMet.ico'") 171 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_SysReqNotMet.ico'") 172 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_UiInfo.xml'") 173 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_warn.ico'") 174 | QueryDatabase("DELETE FROM `MsiFileHash` WHERE `File_` = 'NetFx_watermark.bmp'") 175 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_amd64_jpn_FullLP'") 176 | QueryDatabase("DELETE FROM `Registry` WHERE `Component_` = 'Identity_RegEntries_x86_jpn_FullLP'") 177 | QueryDatabase("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL PRIMARY KEY `Name`)") 178 | QueryDatabase(Array("DisplayIcon.ico", "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('DisplayIcon', ?)")) 179 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('ARPPRODUCTICON','DisplayIcon')") 180 | QueryDatabase("INSERT INTO `Property` (`Property`,`Value`) VALUES ('EXTUI','1')") 181 | QueryDatabase("DELETE FROM `Property` WHERE `Property` = 'ARPSYSTEMCOMPONENT'") 182 | Set db = nothing 183 | End Function -------------------------------------------------------------------------------- /BIN/NDP/WiFilVer.vbs: -------------------------------------------------------------------------------- 1 | ' Windows Installer utility to report or update file versions, sizes, languages 2 | ' For use with Windows Scripting Host, CScript.exe or WScript.exe 3 | ' Copyright (c) Microsoft Corporation. All rights reserved. 4 | ' Demonstrates the access to install engine and actions 5 | ' 6 | Option Explicit 7 | 8 | ' FileSystemObject.CreateTextFile and FileSystemObject.OpenTextFile 9 | Const OpenAsASCII = 0 10 | Const OpenAsUnicode = -1 11 | 12 | ' FileSystemObject.CreateTextFile 13 | Const OverwriteIfExist = -1 14 | Const FailIfExist = 0 15 | 16 | ' FileSystemObject.OpenTextFile 17 | Const OpenAsDefault = -2 18 | Const CreateIfNotExist = -1 19 | Const FailIfNotExist = 0 20 | Const ForReading = 1 21 | Const ForWriting = 2 22 | Const ForAppending = 8 23 | 24 | Const msiOpenDatabaseModeReadOnly = 0 25 | Const msiOpenDatabaseModeTransact = 1 26 | 27 | Const msiViewModifyInsert = 1 28 | Const msiViewModifyUpdate = 2 29 | Const msiViewModifyAssign = 3 30 | Const msiViewModifyReplace = 4 31 | Const msiViewModifyDelete = 6 32 | 33 | Const msiUILevelNone = 2 34 | 35 | Const msiRunModeSourceShortNames = 9 36 | 37 | Const msidbFileAttributesNoncompressed = &h00002000 38 | 39 | Dim argCount:argCount = Wscript.Arguments.Count 40 | Dim iArg:iArg = 0 41 | If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0 42 | If (argCount < 1) Then 43 | Wscript.Echo "Windows Installer utility to updata File table sizes and versions" &_ 44 | vbNewLine & " The 1st argument is the path to MSI database, at the source file root" &_ 45 | vbNewLine & " The 2nd argument can optionally specify separate source location from the MSI" &_ 46 | vbNewLine & " The following options may be specified at any point on the command line" &_ 47 | vbNewLine & " /U to update the MSI database with the file sizes, versions, and languages" &_ 48 | vbNewLine & " /H to populate the MsiFileHash table (and create if it doesn't exist)" &_ 49 | vbNewLine & " Notes:" &_ 50 | vbNewLine & " If source type set to compressed, all files will be opened at the root" &_ 51 | vbNewLine & " Using CSCRIPT.EXE without the /U option, the file info will be displayed" &_ 52 | vbNewLine & " Using the /H option requires Windows Installer version 2.0 or greater" &_ 53 | vbNewLine & " Using the /H option also requires the /U option" &_ 54 | vbNewLine &_ 55 | vbNewLine & "Copyright (C) Microsoft Corporation. All rights reserved." 56 | Wscript.Quit 1 57 | End If 58 | 59 | ' Get argument values, processing any option flags 60 | Dim updateMsi : updateMsi = False 61 | Dim populateHash : populateHash = False 62 | Dim sequenceFile : sequenceFile = False 63 | Dim databasePath : databasePath = NextArgument 64 | Dim sourceFolder : sourceFolder = NextArgument 65 | If Not IsEmpty(NextArgument) Then Fail "More than 2 arguments supplied" ' process any trailing options 66 | If Not IsEmpty(sourceFolder) And Right(sourceFolder, 1) <> "\" Then sourceFolder = sourceFolder & "\" 67 | Dim console : If UCase(Mid(Wscript.FullName, Len(Wscript.Path) + 2, 1)) = "C" Then console = True 68 | 69 | ' Connect to Windows Installer object 70 | On Error Resume Next 71 | Dim installer : Set installer = Nothing 72 | Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError 73 | 74 | Dim errMsg 75 | 76 | ' Check Installer version to see if MsiFileHash table population is supported 77 | Dim supportHash : supportHash = False 78 | Dim verInstaller : verInstaller = installer.Version 79 | If CInt(Left(verInstaller, 1)) >= 2 Then supportHash = True 80 | If populateHash And NOT supportHash Then 81 | errMsg = "The version of Windows Installer on the machine does not support populating the MsiFileHash table." 82 | errMsg = errMsg & " Windows Installer version 2.0 is the mininum required version. The version on the machine is " & verInstaller & vbNewLine 83 | Fail errMsg 84 | End If 85 | 86 | ' Check if multiple language package, and force use of primary language 87 | REM Set sumInfo = database.SummaryInformation(3) : CheckError 88 | 89 | ' Open database 90 | Dim database, openMode, view, record, updateMode, sumInfo 91 | If updateMsi Then openMode = msiOpenDatabaseModeTransact Else openMode = msiOpenDatabaseModeReadOnly 92 | Set database = installer.OpenDatabase(databasePath, openMode) : CheckError 93 | 94 | ' Create MsiFileHash table if we will be populating it and it is not already present 95 | Dim hashView, iTableStat, fileHash, hashUpdateRec 96 | iTableStat = Database.TablePersistent("MsiFileHash") 97 | If populateHash Then 98 | If NOT updateMsi Then 99 | errMsg = "Populating the MsiFileHash table requires that the database be open for writing. Please include the /U option" 100 | Fail errMsg 101 | End If 102 | 103 | If iTableStat <> 1 Then 104 | Set hashView = database.OpenView("CREATE TABLE `MsiFileHash` ( `File_` CHAR(72) NOT NULL, `Options` INTEGER NOT NULL, `HashPart1` LONG NOT NULL, `HashPart2` LONG NOT NULL, `HashPart3` LONG NOT NULL, `HashPart4` LONG NOT NULL PRIMARY KEY `File_` )") : CheckError 105 | hashView.Execute : CheckError 106 | End If 107 | 108 | Set hashView = database.OpenView("SELECT `File_`, `Options`, `HashPart1`, `HashPart2`, `HashPart3`, `HashPart4` FROM `MsiFileHash`") : CheckError 109 | hashView.Execute : CheckError 110 | 111 | Set hashUpdateRec = installer.CreateRecord(6) 112 | End If 113 | 114 | ' Create an install session and execute actions in order to perform directory resolution 115 | installer.UILevel = msiUILevelNone 116 | Dim session : Set session = installer.OpenPackage(database,1) : If Err <> 0 Then Fail "Database: " & databasePath & ". Invalid installer package format" 117 | Dim shortNames : shortNames = session.Mode(msiRunModeSourceShortNames) : CheckError 118 | If Not IsEmpty(sourceFolder) Then session.Property("OriginalDatabase") = sourceFolder : CheckError 119 | Dim stat : stat = session.DoAction("CostInitialize") : CheckError 120 | If stat <> 1 Then Fail "CostInitialize failed, returned " & stat 121 | 122 | ' Join File table to Component table in order to find directories 123 | Dim orderBy : If sequenceFile Then orderBy = "Directory_" Else orderBy = "Sequence" 124 | Set view = database.OpenView("SELECT File,FileName,Directory_,FileSize,Version,Language FROM File,Component WHERE Component_=Component ORDER BY " & orderBy) : CheckError 125 | view.Execute : CheckError 126 | 127 | ' Create view on File table to check for companion file version syntax so that we don't overwrite them 128 | Dim companionView 129 | set companionView = database.OpenView("SELECT File FROM File WHERE File=?") : CheckError 130 | 131 | ' Fetch each file and request the source path, then verify the source path, and get the file info if present 132 | Dim fileKey, fileName, folder, sourcePath, fileSize, version, language, delim, message, info 133 | Do 134 | Set record = view.Fetch : CheckError 135 | If record Is Nothing Then Exit Do 136 | fileKey = record.StringData(1) 137 | fileName = record.StringData(2) 138 | folder = record.StringData(3) 139 | REM fileSize = record.IntegerData(4) 140 | REM companion = record.StringData(5) 141 | version = record.StringData(5) 142 | REM language = record.StringData(6) 143 | 144 | ' Check to see if this is a companion file 145 | Dim companionRec 146 | Set companionRec = installer.CreateRecord(1) : CheckError 147 | companionRec.StringData(1) = version 148 | companionView.Close : CheckError 149 | companionView.Execute companionRec : CheckError 150 | Dim companionFetch 151 | Set companionFetch = companionView.Fetch : CheckError 152 | Dim companionFile : companionFile = True 153 | If companionFetch Is Nothing Then 154 | companionFile = False 155 | End If 156 | 157 | delim = InStr(1, fileName, "|", vbTextCompare) 158 | If delim <> 0 Then 159 | If shortNames Then fileName = Left(fileName, delim-1) Else fileName = Right(fileName, Len(fileName) - delim) 160 | End If 161 | sourcePath = session.SourcePath(folder) & fileName 162 | If installer.FileAttributes(sourcePath) = -1 Then 163 | message = message & vbNewLine & sourcePath 164 | Else 165 | fileSize = installer.FileSize(sourcePath) : CheckError 166 | version = Empty : version = installer.FileVersion(sourcePath, False) : Err.Clear ' early MSI implementation fails if no version 167 | language = Empty : language = installer.FileVersion(sourcePath, True) : Err.Clear ' early MSI implementation doesn't support language 168 | If language = version Then language = Empty ' Temp check for MSI.DLL version without language support 169 | If Err <> 0 Then version = Empty : Err.Clear 170 | If updateMsi Then 171 | ' update File table info 172 | record.IntegerData(4) = fileSize 173 | If Len(version) > 0 Then record.StringData(5) = version 174 | If Len(language) > 0 Then record.StringData(6) = language 175 | view.Modify msiViewModifyUpdate, record : CheckError 176 | 177 | ' update MsiFileHash table info if this is an unversioned file 178 | If populateHash And Len(version) = 0 Then 179 | Set fileHash = installer.FileHash(sourcePath, 0) : CheckError 180 | hashUpdateRec.StringData(1) = fileKey 181 | hashUpdateRec.IntegerData(2) = 0 182 | hashUpdateRec.IntegerData(3) = fileHash.IntegerData(1) 183 | hashUpdateRec.IntegerData(4) = fileHash.IntegerData(2) 184 | hashUpdateRec.IntegerData(5) = fileHash.IntegerData(3) 185 | hashUpdateRec.IntegerData(6) = fileHash.IntegerData(4) 186 | hashView.Modify msiViewModifyAssign, hashUpdateRec : CheckError 187 | End If 188 | ElseIf console Then 189 | If companionFile Then 190 | info = "* " 191 | info = info & fileName : If Len(info) < 12 Then info = info & Space(12 - Len(info)) 192 | info = info & " skipped (version is a reference to a companion file)" 193 | Else 194 | info = fileName : If Len(info) < 12 Then info = info & Space(12 - Len(info)) 195 | info = info & " size=" & fileSize : If Len(info) < 26 Then info = info & Space(26 - Len(info)) 196 | If Len(version) > 0 Then info = info & " vers=" & version : If Len(info) < 45 Then info = info & Space(45 - Len(info)) 197 | If Len(language) > 0 Then info = info & " lang=" & language 198 | End If 199 | Wscript.Echo info 200 | End If 201 | End If 202 | Loop 203 | REM Wscript.Echo "SourceDir = " & session.Property("SourceDir") 204 | If Not IsEmpty(message) Then Fail "Error, the following files were not available:" & message 205 | 206 | ' Update SummaryInformation 207 | If updateMsi Then 208 | Set sumInfo = database.SummaryInformation(3) : CheckError 209 | sumInfo.Property(11) = Now 210 | sumInfo.Property(13) = Now 211 | sumInfo.Persist 212 | End If 213 | 214 | ' Commit database in case updates performed 215 | database.Commit : CheckError 216 | Wscript.Quit 0 217 | 218 | ' Extract argument value from command line, processing any option flags 219 | Function NextArgument 220 | Dim arg 221 | Do ' loop to pull in option flags until an argument value is found 222 | If iArg >= argCount Then Exit Function 223 | arg = Wscript.Arguments(iArg) 224 | iArg = iArg + 1 225 | If (AscW(arg) <> AscW("/")) And (AscW(arg) <> AscW("-")) Then Exit Do 226 | Select Case UCase(Right(arg, Len(arg)-1)) 227 | Case "U" : updateMsi = True 228 | Case "H" : populateHash = True 229 | Case Else: Wscript.Echo "Invalid option flag:", arg : Wscript.Quit 1 230 | End Select 231 | Loop 232 | NextArgument = arg 233 | End Function 234 | 235 | Sub CheckError 236 | Dim message, errRec 237 | If Err = 0 Then Exit Sub 238 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 239 | If Not installer Is Nothing Then 240 | Set errRec = installer.LastErrorRecord 241 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 242 | End If 243 | Fail message 244 | End Sub 245 | 246 | Sub Fail(message) 247 | Wscript.Echo message 248 | Wscript.Quit 2 249 | End Sub 250 | -------------------------------------------------------------------------------- /BIN/NDP/WiSumInf.vbs: -------------------------------------------------------------------------------- 1 | ' Windows Installer utility to manage the summary information stream 2 | ' For use with Windows Scripting Host, CScript.exe or WScript.exe 3 | ' Copyright (c) Microsoft Corporation. All rights reserved. 4 | ' Demonstrates the use of the database summary information methods 5 | 6 | Option Explicit 7 | 8 | Const msiOpenDatabaseModeReadOnly = 0 9 | Const msiOpenDatabaseModeTransact = 1 10 | Const msiOpenDatabaseModeCreate = 3 11 | 12 | Dim propList(19, 1) 13 | propList( 1,0) = "Codepage" : propList( 1,1) = "ANSI codepage of text strings in summary information only" 14 | propList( 2,0) = "Title" : propList( 2,1) = "Package type, e.g. Installation Database" 15 | propList( 3,0) = "Subject" : propList( 3,1) = "Product full name or description" 16 | propList( 4,0) = "Author" : propList( 4,1) = "Creator, typically vendor name" 17 | propList( 5,0) = "Keywords" : propList( 5,1) = "List of keywords for use by file browsers" 18 | propList( 6,0) = "Comments" : propList( 6,1) = "Description of purpose or use of package" 19 | propList( 7,0) = "Template" : propList( 7,1) = "Target system: Platform(s);Language(s)" 20 | propList( 8,0) = "LastAuthor" : propList( 8,1) = "Used for transforms only: New target: Platform(s);Language(s)" 21 | propList( 9,0) = "Revision" : propList( 9,1) = "Package code GUID, for transforms contains old and new info" 22 | propList(11,0) = "Printed" : propList(11,1) = "Date and time of installation image, same as Created if CD" 23 | propList(12,0) = "Created" : propList(12,1) = "Date and time of package creation" 24 | propList(13,0) = "Saved" : propList(13,1) = "Date and time of last package modification" 25 | propList(14,0) = "Pages" : propList(14,1) = "Minimum Windows Installer version required: Major * 100 + Minor" 26 | propList(15,0) = "Words" : propList(15,1) = "Source and Elevation flags: 1=short names, 2=compressed, 4=network image, 8=LUA package" 27 | propList(16,0) = "Characters" : propList(16,1) = "Used for transforms only: validation and error flags" 28 | propList(18,0) = "Application" : propList(18,1) = "Application associated with file, ""Windows Installer"" for MSI" 29 | propList(19,0) = "Security" : propList(19,1) = "0=Read/write 2=Readonly recommended 4=Readonly enforced" 30 | 31 | Dim iArg, iProp, property, value, message 32 | Dim argCount:argCount = Wscript.Arguments.Count 33 | If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0 34 | If (argCount = 0) Then 35 | message = "Windows Installer utility to manage summary information stream" &_ 36 | vbNewLine & " 1st argument is the path to the storage file (installer package)" &_ 37 | vbNewLine & " If no other arguments are supplied, summary properties will be listed" &_ 38 | vbNewLine & " Subsequent arguments are property=value pairs to be updated" &_ 39 | vbNewLine & " Either the numeric or the names below may be used for the property" &_ 40 | vbNewLine & " Date and time fields use current locale format, or ""Now"" or ""Date""" &_ 41 | vbNewLine & " Some properties have specific meaning for installer packages" 42 | For iProp = 1 To UBound(propList) 43 | property = propList(iProp, 0) 44 | If Not IsEmpty(property) Then 45 | message = message & vbNewLine & Right(" " & iProp, 2) & " " & property & " - " & propLIst(iProp, 1) 46 | End If 47 | Next 48 | message = message & vbNewLine & vbNewLine & "Copyright (C) Microsoft Corporation. All rights reserved." 49 | 50 | Wscript.Echo message 51 | Wscript.Quit 1 52 | End If 53 | 54 | ' Connect to Windows Installer object 55 | On Error Resume Next 56 | Dim installer : Set installer = Nothing 57 | Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : If CheckError("MSI.DLL not registered") Then Wscript.Quit 2 58 | 59 | ' Evaluate command-line arguments and open summary information 60 | Dim cUpdate:cUpdate = 0 : If argCount > 1 Then cUpdate = 20 61 | Dim sumInfo : Set sumInfo = installer.SummaryInformation(Wscript.Arguments(0), cUpdate) : If CheckError(Empty) Then Wscript.Quit 2 62 | 63 | ' If only package name supplied, then list all properties in summary information stream 64 | If argCount = 1 Then 65 | For iProp = 1 to UBound(propList) 66 | value = sumInfo.Property(iProp) : CheckError(Empty) 67 | If Not IsEmpty(value) Then message = message & vbNewLine & Right(" " & iProp, 2) & " " & propList(iProp, 0) & " = " & value 68 | Next 69 | Wscript.Echo message 70 | Wscript.Quit 0 71 | End If 72 | 73 | ' Process property settings, combining arguments if equal sign has spaces before or after it 74 | For iArg = 1 To argCount - 1 75 | property = property & Wscript.Arguments(iArg) 76 | Dim iEquals:iEquals = InStr(1, property, "=", vbTextCompare) 'Must contain an equals sign followed by a value 77 | If iEquals > 0 And iEquals <> Len(property) Then 78 | value = Right(property, Len(property) - iEquals) 79 | property = Left(property, iEquals - 1) 80 | If IsNumeric(property) Then 81 | iProp = CLng(property) 82 | Else ' Lookup property name if numeric property ID not supplied 83 | For iProp = 1 To UBound(propList) 84 | If propList(iProp, 0) = property Then Exit For 85 | Next 86 | End If 87 | If iProp > UBound(propList) Then 88 | Wscript.Echo "Unknown summary property name: " & property 89 | sumInfo.Persist ' Note! must write even if error, else entire stream will be deleted 90 | Wscript.Quit 2 91 | End If 92 | If iProp = 11 Or iProp = 12 Or iProp = 13 Then 93 | If UCase(value) = "NOW" Then value = Now 94 | If UCase(value) = "DATE" Then value = Date 95 | value = CDate(value) 96 | End If 97 | If iProp = 1 Or iProp = 14 Or iProp = 15 Or iProp = 16 Or iProp = 19 Then value = CLng(value) 98 | sumInfo.Property(iProp) = value : CheckError("Bad format for property value " & iProp) 99 | property = Empty 100 | End If 101 | Next 102 | If Not IsEmpty(property) Then 103 | Wscript.Echo "Arguments must be in the form: property=value " & property 104 | sumInfo.Persist ' Note! must write even if error, else entire stream will be deleted 105 | Wscript.Quit 2 106 | End If 107 | 108 | ' Write new property set. Note! must write even if error, else entire stream will be deleted 109 | sumInfo.Persist : If CheckError("Error persisting summary property stream") Then Wscript.Quit 2 110 | Wscript.Quit 0 111 | 112 | 113 | Function CheckError(message) 114 | If Err = 0 Then Exit Function 115 | If IsEmpty(message) Then message = Err.Source & " " & Hex(Err) & ": " & Err.Description 116 | If Not installer Is Nothing Then 117 | Dim errRec : Set errRec = installer.LastErrorRecord 118 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 119 | End If 120 | Wscript.Echo message 121 | CheckError = True 122 | Err.Clear 123 | End Function 124 | -------------------------------------------------------------------------------- /BIN/NDP/netfx.xsl: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /BIN/NDP/showmsp.vbs: -------------------------------------------------------------------------------- 1 | ' Usage: 2 | ' 3 | ' cscript .vbs 4 | ' 5 | ' script by dumpydooby (modded by ricktendo64) 6 | Option Explicit 7 | Dim ws, installer, fs, db, view, record, x 8 | Set ws = WScript.CreateObject("WScript.Shell") 9 | Set fs = CreateObject("Scripting.FileSystemObject") 10 | Set installer = WScript.CreateObject("WindowsInstaller.Installer") 11 | If WScript.Arguments.Count <> 0 Then 12 | For each x in WScript.Arguments 13 | ProcessMSI x 14 | Next 15 | Else 16 | If fs.FileExists("netfx_Full_x64.msi") Then ProcessMSI "netfx_Full_x64.msi" 17 | If fs.FileExists("netfx_Full_x86.msi") Then ProcessMSI "netfx_Full_x86.msi" 18 | If fs.FileExists("netfx_Full_GDR_x64.msi") Then ProcessMSI "netfx_Full_GDR_x64.msi" 19 | If fs.FileExists("netfx_Full_GDR_x86.msi") Then ProcessMSI "netfx_Full_GDR_x86.msi" 20 | If fs.FileExists("netfx_Full_LDR_x64.msi") Then ProcessMSI "netfx_Full_LDR_x64.msi" 21 | If fs.FileExists("netfx_Full_LDR_x86.msi") Then ProcessMSI "netfx_Full_LDR_x86.msi" 22 | End If 23 | '********************************************************************** 24 | '** Function; Query MSI database ** 25 | '********************************************************************** 26 | Function QueryDatabase(arrOpts) 27 | On Error Resume Next 28 | Dim query, file, binary : binary = false 29 | If LCase(TypeName(arrOpts)) = "string" Then 30 | query = arrOpts 31 | Else 32 | If fs.FileExists(arrOpts(0)) Then 33 | file = arrOpts(0) 34 | query = arrOpts(1) 35 | Else 36 | query = arrOpts(0) 37 | file = arrOpts(1) 38 | End If 39 | binary = true 40 | End If 41 | WScript.Echo query 42 | If binary Then 43 | Set record = installer.CreateRecord(1) 44 | record.SetStream 1, file 45 | End If 46 | Set view = db.OpenView (query) : CheckError 47 | If binary Then 48 | view.Execute record : CheckError 49 | Else 50 | view.Execute : CheckError 51 | End If 52 | view.close 53 | Set view = nothing 54 | If binary Then Set record = nothing 55 | binary = false 56 | db.commit : CheckError 57 | End Function 58 | '********************************************************************** 59 | '** Subroutine; Check errors in most recently executed MSI command ** 60 | '********************************************************************** 61 | Sub CheckError 62 | Dim message, errRec 63 | If Err = 0 Then Exit Sub 64 | message = Err.Source & " " & Hex(Err) & ": " & Err.Description 65 | If Not installer Is Nothing Then 66 | Set errRec = installer.LastErrorRecord 67 | If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText 68 | End If 69 | Wscript.Echo "" : Wscript.Echo message : Wscript.Echo "" 70 | Wscript.Quit 2 71 | End Sub 72 | '********************************************************************** 73 | '** Function; Push changes to MSI ** 74 | '********************************************************************** 75 | Function ProcessMSI(file) 76 | Set db = installer.OpenDatabase(file, 1) 77 | On Error Resume Next 78 | -------------------------------------------------------------------------------- /LP/.README: -------------------------------------------------------------------------------- 1 | Place NDP Language Pack files here 2 | -------------------------------------------------------------------------------- /LP/NDP452-KB2901983.txt: -------------------------------------------------------------------------------- 1 | .NET Framework 4.5.2 Language Packs (KB2901983) 2 | 3 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-ara_d307751869ac9d02eb4c12ebd9ee44f8d0b15acb.exe 4 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-chs_aeb4b0c4406a559a0d52a125407bcbeea57e218b.exe 5 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-cht_1bc9e348eb9858c60c88bb4434de4a67a884f2f9.exe 6 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-csy_a086ad43fe42bb43c25e3e929d197f5179172243.exe 7 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-dan_d837e8f3ed15558b994625581ed8034bf3c1c0cc.exe 8 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-deu_1081930dd96b83e3e324489a7f98658274207ccd.exe 9 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-ell_c695a98a926651564d258467a4dddb8fb193ed7d.exe 10 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-esn_3a042633a6f2bdb340ac19fa7fc1d34b49baa4b8.exe 11 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-fin_649cc9d9a2eb33f621e65b2a1924155884fee2d3.exe 12 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-fra_035e43ece0120cf2fafef8179f4ce8479a20670d.exe 13 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-ita_8d050031e2f7e5809715e0e568b3edeb100f0a00.exe 14 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-heb_a35656266a7aef47c59002b3a4e566afc8cd1d0a.exe 15 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-hun_2d94f4bf270bb33216c16b95de16459c6db87f94.exe 16 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-jpn_93f0f64c83d9fb96397f6235360c1044d0ceb364.exe 17 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-kor_26b599463405690e351ba7b50202bc01e3ddf9b9.exe 18 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-nld_3949ab9a31aa396067fe9acff2528d2ebfa93d99.exe 19 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-nor_0dcb1b69906dabf8c7a31f9b8001b68a4f2ad99e.exe 20 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-plk_46275115ba03088a7b79cebdcb26eb12e1b1e19d.exe 21 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-ptb_e2f1863a58d2814960bca28d53d2aa3a9046a3b3.exe 22 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-ptg_ac193bd42a4c58aee384c71a75663ac3543b51c2.exe 23 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-rus_3569f41633540a74f7735dc04ae35a8745483d58.exe 24 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-sve_2bd82b002019b1faf226d6bf46a0d7d77b29394f.exe 25 | http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-trk_2144cdfa767e914ec07d65c59e0cb240f9fcf161.exe 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # .NET 4.5.2 Repack Installer for Windows 7 SP1 x86/x64 2 | 3 | * Repacked slim installer for .NET Framework 4.5.2 with latest updates integrated and without extra setup payload. 4 | 5 | * Note: 6 | to rebuild/recreate *netfx_Full_LDR.mzz* file, you need to download [WiX Toolset binaries](https://github.com/wixtoolset/wix3/releases/download/wix3111rtm/wix311-binaries.zip) 7 | then, extract the files into **BIN** directory (you can delete the big sdk folder, it's not needed). 8 | 9 | ## Create slim main package: 10 | 11 | * Place .NET 4.5.2 offline installer file here next to the scripts 12 | you can use the original RTM installer [NDP452-KB2901983-x86-x64-ENU.exe](http://download.windowsupdate.com/c/msdownload/update/software/ftpk/2015/01/ndp452-kb2901983-x86-x64-enu_0350e593835125031f36e846ff3b936c09b8d479.exe), 13 | or the latest Hotfix Rollup [NDP452-KB3166737-x86-x64-ENU.exe](http://download.microsoft.com/download/c/8/0/c80d277f-d54a-4f26-993b-b29f2d39957d/ndp452-kb3166737-x86-x64-enu.exe), it's actually a standalone full refreshed installer. 14 | 15 | * Place any updates exe files here also (make sure to get files for both x86 and x64). 16 | 17 | * Optional, edit *dotNetFx452.cmd* and change the two options values (1 or 0): 18 | **BuildMzz**: Rebuild/Repack files inside *netfx_Full_LDR.mzz* instead administrative directories. 19 | **ShowMsp**: Show slipstreamed patches in "Control Panel\Programs and Features\Installed Updates". 20 | 21 | * Run *dotNetFx452.cmd* as administrator. 22 | 23 | * Note: you may change **\BIN\NDP\DisplayIcon.ico** prior execution, if you want another ARP icon. 24 | 25 | * Optional, use *7zSFX.cmd* to create 7-zip SFX executable installer afterwards. 26 | you will need to modify **\BIN\7zSFX\7zSD.sfx** module with resource editor to update and set version. 27 | 28 | * Available command line switches: 29 | ``` 30 | /y 31 | Passive mode, shows progress but requires no user interaction. 32 | /ai 33 | Quiet mode, no user input required, only extraction dialog is shown. 34 | /ai /gm2 35 | Quiet mode, no user input required or output shown. 36 | /sfxlang: 37 | Set the program display language, if possible. Example: /sfxlang:1031 38 | /h | /? 39 | Display this help. 40 | 41 | Examples: 42 | 43 | Automatically install package and display progress: 44 | NDP452-Slim-x86-x64-ENU.exe /y 45 | Silently install package and display no progress: 46 | NDP452-Slim-x86-x64-ENU.exe /ai /gm2 47 | ``` 48 | 49 | * If you previously created 7z.SFX installer (main or langpack), move it to another location before attemping to use/run **dotNetFx.cmd** again. 50 | 51 | ## Create slim languages packages: 52 | 53 | * Place .NET 4.5.2 LangPack files inside **LP** directory (Recommended to put all lang files, or you may put only specific languages). 54 | 55 | * Run *dotNetFx452LP.cmd* as administrator. 56 | 57 | * Note: you may change **\BIN\NDP\LP\DisplayIcon.ico** prior execution, if you want another ARP icon. 58 | 59 | * Optional, use *7zSFX.cmd* to create 7-zip SFX executable installer afterwards. 60 | you will need to modify **\BIN\7zSFXLP\7zSD.sfx** module with resource editor to update and set version. 61 | 62 | * Available command line switches: 63 | ``` 64 | /y 65 | Passive mode, shows progress but requires no user interaction. 66 | /ai 67 | Quiet mode, no user input required, only extraction dialog is shown. 68 | /ail 69 | LP Passive mode. Default or specified LP is installed. 70 | /sfxlang: 71 | Language mode. Change default display language and/or language pack to install 72 | /gm2 73 | Optional command line switch to disable extraction dialog 74 | /h | /? 75 | Display this help. 76 | 77 | Examples: 78 | 79 | Automatically install default language and display progress: 80 | NDP452-Slim-x86-x64-INTL.exe /y 81 | Silently install default language and display no progress: 82 | NDP452-Slim-x86-x64-INTL.exe /ai 83 | Silently install specific language (1031=German): 84 | NDP452-Slim-x86-x64-INTL.exe /sfxlang:1031 /ai 85 | Install French language and display progress: 86 | NDP452-Slim-x86-x64-INTL.exe /sfxlang:1036 /ail 87 | ``` 88 | 89 | ## Credits: 90 | 91 | - [ricktendo64](https://forums.mydigitallife.net/members/28038/) (Original installer and msi vbs slimmers). 92 | - [7-zip](https://www.7-zip.org/). 93 | - [WiX Toolset](https://wixtoolset.org). 94 | - Microsoft Windows SDK for Windows 7 (Windows Installer utility scripts). 95 | - Microsoft .NET Framework is an intellectual property of (c) Microsoft Corporation. All Rights Reserved. 96 | -------------------------------------------------------------------------------- /dotNetFx452.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | :: Rebuild/Repack files inside netfx_Full_LDR.mzz 3 | set BuildMzz=1 4 | 5 | :: Show slipstreamed patches in Control Panel\Programs and Features\Installed Updates 6 | set ShowMsp=1 7 | 8 | %windir%\system32\reg.exe query "HKU\S-1-5-19" >nul 2>&1 || ( 9 | echo ==== ERROR ==== 10 | echo This script require administrator privileges. 11 | echo To do so, right click on this script and select 'Run as administrator' 12 | echo. 13 | echo Press any key to exit... 14 | pause >nul 15 | goto :eof 16 | ) 17 | cd /d "%~dp0" 18 | if not exist "BIN\7z.exe" ( 19 | echo ==== ERROR ==== 20 | echo Required binary files are missing. 21 | echo. 22 | echo Press any key to exit... 23 | pause >nul 24 | goto :eof 25 | ) 26 | if not exist "BIN\NDP\*.vbs" ( 27 | echo ==== ERROR ==== 28 | echo Required work files are missing. 29 | echo. 30 | echo Press any key to exit... 31 | pause >nul 32 | goto :eof 33 | ) 34 | if not exist "*NDP*ENU*.exe" ( 35 | echo ==== ERROR ==== 36 | echo NDP*-x86-x64-ENU.exe file is not detected. 37 | echo. 38 | echo Press any key to exit... 39 | pause >nul 40 | goto :eof 41 | ) 42 | 43 | setlocal EnableExtensions EnableDelayedExpansion 44 | for /f %%i in ('dir /b *NDP*-ENU*.exe') do set "ndpack=%%i" 45 | for /f "tokens=1 delims=-" %%i in ('dir /b %ndpack%') do set "ndpver=%%i" 46 | for %%b in (D,N,P) do set ndpver=!ndpver:%%b=%%b! 47 | 48 | set msp=0 49 | for /f %%i in ('dir /b *NDP*.exe') do ( 50 | if /i not "%%i"=="%ndpack%" call set /a msp+=1 51 | ) 52 | if %msp%==0 ( 53 | set ShowMsp=0 54 | goto :extract 55 | ) 56 | set _ci=0 57 | for /f %%i in ('dir /b /od *NDP*x86*.exe') do if /i not "%%i"=="%ndpack%" ( 58 | set /a _ci+=1 59 | set "x86exe!_ci!=%%i" 60 | ) 61 | set _cx=0 62 | for /f %%i in ('dir /b /od *NDP*x64*.exe') do if /i not "%%i"=="%ndpack%" ( 63 | set /a _cx+=1 64 | set "x64exe!_cx!=%%i" 65 | ) 66 | if not %_ci%==%_cx% ( 67 | echo ==== ERROR ==== 68 | echo Update files count is not equal for both architectures. 69 | echo. 70 | echo Press any key to exit... 71 | pause >nul 72 | goto :eof 73 | ) 74 | 75 | :extract 76 | echo. 77 | echo Extract files . . . 78 | set "_wix=%~dp0BIN" 79 | set /a rnd=%random% 80 | if exist "%ndpver%" ren %ndpver% %ndpver%_%rnd% 81 | BIN\7z.exe e %ndpack% -o%ndpver%\temp netfx_Full_LDR_x64.msi netfx_Full_LDR_x86.msi netfx_Full_LDR.mzz >nul 82 | if %msp%==0 ( 83 | goto :slim 84 | ) 85 | for /l %%i in (1,1,%_ci%) do ( 86 | for /f "tokens=2 delims=-" %%a in ('dir /b !x86exe%%i!') do ( 87 | set "x86kb%%i=%%a" 88 | set "x86msp%%i=%ndpver%-%%a-x86.msp" 89 | for %%b in (K,B) do set x86kb%%i=!x86kb%%i:%%b=%%b! 90 | ) 91 | ) 92 | for /l %%i in (1,1,%_cx%) do ( 93 | for /f "tokens=2 delims=-" %%a in ('dir /b !x64exe%%i!') do ( 94 | set "x64kb%%i=%%a" 95 | set "x64msp%%i=%ndpver%-%%a-x64.msp" 96 | for %%b in (K,B) do set x64kb%%i=!x64kb%%i:%%b=%%b! 97 | ) 98 | ) 99 | for /l %%i in (1,1,%_ci%) do ( 100 | BIN\7z.exe e !x86exe%%i! -o%ndpver% *.msp >nul 101 | for /f %%a in ('dir /b %ndpver%\*!x86kb%%i!.msp') do ren %ndpver%\%%a !x86msp%%i! 102 | ) 103 | for /l %%i in (1,1,%_cx%) do ( 104 | BIN\7z.exe e !x64exe%%i! -o%ndpver% *.msp >nul 105 | for /f %%a in ('dir /b %ndpver%\*!x64kb%%i!.msp') do ren %ndpver%\%%a !x64msp%%i! 106 | ) 107 | 108 | :slim 109 | echo. 110 | echo Slim MSI database . . . 111 | xcopy /criy BIN\NDP\* %ndpver%\ >nul 112 | cd %ndpver% 113 | cscript //B slim.vbs temp\netfx_Full_LDR_x86.msi 114 | cscript //B slim.vbs temp\netfx_Full_LDR_x64.msi 115 | if %BuildMzz%==1 if %msp%==0 goto :noop 116 | set name="Microsoft .NET Framework 4.5.2" 117 | set desc="Microsoft .NET Framework 4.5.2; Copyright (C) Microsoft Corporation, All rights reserved." 118 | for /f "tokens=2* delims== " %%a in ('cscript //NoLogo WiSumInf.vbs temp\netfx_Full_LDR_x86.msi ^| findstr /i Revision') do set "guid86=%%b" 119 | for /f "tokens=2* delims== " %%a in ('cscript //NoLogo WiSumInf.vbs temp\netfx_Full_LDR_x64.msi ^| findstr /i Revision') do set "guid64=%%b" 120 | 121 | echo. 122 | echo Create administrative install ^(x86^) . . . 123 | start /wait msiexec /a temp\netfx_Full_LDR_x86.msi TARGETDIR=%cd% /quiet 124 | if not %msp%==0 ( 125 | for /l %%i in (1,1,%_ci%) do ( 126 | start /wait msiexec /a %cd%\netfx_Full_LDR_x86.msi PATCH=%cd%\!x86msp%%i! TARGETDIR=%cd% /quiet 127 | ) 128 | ) 129 | 130 | echo. 131 | echo Create administrative install ^(x64^) . . . 132 | start /wait msiexec /a temp\netfx_Full_LDR_x64.msi TARGETDIR=%cd% /quiet 133 | if not %msp%==0 ( 134 | for /l %%i in (1,1,%_cx%) do ( 135 | start /wait msiexec /a %cd%\netfx_Full_LDR_x64.msi PATCH=%cd%\!x64msp%%i! TARGETDIR=%cd% /quiet 136 | ) 137 | ) 138 | 139 | rd /s /q temp\ 140 | 141 | echo. 142 | echo Adjust MSI properties . . . 143 | if not %msp%==0 ( 144 | cscript //B WiFilVer.vbs netfx_Full_LDR_x86.msi /u 145 | cscript //B WiFilVer.vbs netfx_Full_LDR_x64.msi /u 146 | ) 147 | cscript //B WiSumInf.vbs netfx_Full_LDR_x86.msi Subject=%name% Comments=%desc% Revision=%guid86% Words=4 148 | cscript //B WiSumInf.vbs netfx_Full_LDR_x64.msi Subject=%name% Comments=%desc% Revision=%guid64% Words=4 149 | 150 | if %BuildMzz%==0 goto :skip 151 | if not exist "%_wix%\heat.exe" goto :skip 152 | echo. 153 | echo Rebuild netfx_Full_LDR.mzz . . . 154 | cscript //B WiMakCab.vbs netfx_Full_LDR_x64.msi netfx 155 | mkdir SourceDir 156 | cd SourceDir 157 | for /f "tokens=* delims=" %%i in (..\netfx.ddf) do move /y>nul %%i 158 | "%_wix%\heat.exe" dir . -nologo -g1 -gg -suid -scom -sreg -srd -sfrag -svb6 -indent 1 -t ..\netfx.xsl -template product -out ..\netfx.wxs 159 | cd .. 160 | "%_wix%\candle.exe" netfx.wxs -nologo -sw1074 >nul 161 | "%_wix%\light.exe" netfx.wixobj -nologo -spdb -sice:ICE21 -dcl:none >nul 162 | ren product.cab netfx_Full_LDR.mzz 163 | rd /s /q ProgramFilesFolder\ Windows\ SourceDir\ 164 | cscript //B WiSumInf.vbs netfx_Full_LDR_x86.msi Words=0 165 | cscript //B WiSumInf.vbs netfx_Full_LDR_x64.msi Words=0 166 | 167 | :skip 168 | if %ShowMsp%==0 goto :end 169 | echo. 170 | echo Show slipstreamed updates . . . 171 | for /l %%i in (1,1,%_ci%) do ( 172 | ( 173 | echo. QueryDatabase^("UPDATE `Component` SET Condition = '!x86kb%%i!.Classification' WHERE `Component` = '!x86kb%%i!.ARP.Add'"^) 174 | echo. QueryDatabase^("UPDATE `Component` SET Condition = '!x86kb%%i!.AllowRemoval <> 1' WHERE `Component` = '!x86kb%%i!.ARP.NoRemove'"^) 175 | )>>showmsp.vbs 176 | ) 177 | ( 178 | echo. Set db ^= nothing 179 | echo End Function 180 | )>>showmsp.vbs 181 | cscript //B showmsp.vbs 182 | 183 | :end 184 | echo. 185 | echo Cleanup . . . 186 | del /f /q netfx.* *.vbs *.msp *.ico >nul 187 | echo. 188 | echo Done. 189 | echo Press any key to exit. 190 | pause >nul 191 | goto :eof 192 | 193 | :noop 194 | del /f /q netfx.* *.vbs *.ico 195 | robocopy temp\ .\ /MOVE >nul 196 | echo. 197 | echo Done. 198 | echo Press any key to exit. 199 | pause >nul 200 | goto :eof 201 | -------------------------------------------------------------------------------- /dotNetFx452LP.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | %windir%\system32\reg.exe query "HKU\S-1-5-19" >nul 2>&1 || ( 3 | echo ==== ERROR ==== 4 | echo This script require administrator privileges. 5 | echo To do so, right click on this script and select 'Run as administrator' 6 | echo. 7 | echo Press any key to exit... 8 | pause >nul 9 | goto :eof 10 | ) 11 | cd /d "%~dp0" 12 | if not exist "BIN\7z.exe" ( 13 | echo ==== ERROR ==== 14 | echo Required binary files are missing. 15 | echo. 16 | echo Press any key to exit... 17 | pause >nul 18 | goto :eof 19 | ) 20 | if not exist "BIN\NDP\LP\*.vbs" ( 21 | echo ==== ERROR ==== 22 | echo Required work files are missing. 23 | echo. 24 | echo Press any key to exit... 25 | pause >nul 26 | goto :eof 27 | ) 28 | if not exist "LP\*NDP*.exe" ( 29 | echo ==== ERROR ==== 30 | echo NDP*.exe files are not detected. 31 | echo. 32 | echo Press any key to exit... 33 | pause >nul 34 | goto :eof 35 | ) 36 | setlocal EnableExtensions EnableDelayedExpansion 37 | set MUI=(ARA,CHS,CHT,CSY,DAN,DEU,ELL,ESN,FIN,FRA,HEB,HUN,ITA,JPN,KOR,NLD,NOR,PLK,PTB,PTG,RUS,SVE,TRK) 38 | for /f "tokens=1 delims=-" %%i in ('dir /b LP\*NDP*.exe') do set "ndpver=%%iLP" 39 | for %%b in (D,N,P) do set ndpver=!ndpver:%%b=%%b! 40 | xcopy /criy BIN\NDP\LP\* %ndpver%\ >nul 41 | cd %ndpver% 42 | echo. 43 | echo Processing LangPacks . . . 44 | echo. 45 | for %%a in %MUI% do if exist "%~dp0LP\*NDP*%%a*.exe" if not exist "netfx_FullLP_LDR_x86_%%a.msi" ( 46 | echo %%a 47 | ..\BIN\7z.exe e ..\LP\*%%a*.exe -otemp netfx_FullLP_LDR_x64.msi netfx_FullLP_LDR_x86.msi netfx_FullLP_LDR.mzz -aoa >nul 48 | cscript //B slim%%a.vbs temp\netfx_FullLP_LDR_x86.msi 49 | cscript //B slim%%a.vbs temp\netfx_FullLP_LDR_x64.msi 50 | start /wait msiexec /a temp\netfx_FullLP_LDR_x86.msi TARGETDIR="%cd%" /quiet 51 | start /wait msiexec /a temp\netfx_FullLP_LDR_x64.msi TARGETDIR="%cd%" /quiet 52 | ren netfx_FullLP_LDR_x86.msi netfx_FullLP_LDR_x86_%%a.msi 53 | ren netfx_FullLP_LDR_x64.msi netfx_FullLP_LDR_x64_%%a.msi 54 | ) 55 | echo. 56 | echo Cleanup . . . 57 | del /f /q *.vbs *.ico 58 | rd /s /q temp\ 59 | echo. 60 | echo Done. 61 | echo Press any key to exit. 62 | pause >nul 63 | goto :eof 64 | --------------------------------------------------------------------------------