├── LP
├── .README
└── NDP452-KB2901983.txt
├── BIN
├── 7z.dll
├── 7z.exe
├── 7zSFX
│ ├── 7zSD_drag-drop_7z.bat
│ └── 7zSD.sfx
├── 7zSFXLP
│ ├── 7zSD_drag-drop_7z.bat
│ └── 7zSDm.sfx
├── 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
│ ├── netfx.xsl
│ ├── showmsp.vbs
│ ├── WiSumInf.vbs
│ └── WiFilVer.vbs
└── 7z-License.txt
├── .gitattributes
├── 7zSFX.cmd
├── dotNetFx452LP.cmd
├── README.md
└── dotNetFx452.cmd
/LP/.README:
--------------------------------------------------------------------------------
1 | Place NDP Language Pack files here
2 |
--------------------------------------------------------------------------------
/BIN/7z.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/HEAD/BIN/7z.dll
--------------------------------------------------------------------------------
/BIN/7z.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/HEAD/BIN/7z.exe
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/BIN/7zSFX/7zSD_drag-drop_7z.bat:
--------------------------------------------------------------------------------
1 | @copy /b "%~dp17zSD.sfx" + "%~dp1config.txt" + %1 "%~dpn1.exe"
--------------------------------------------------------------------------------
/BIN/7zSFX/7zSD.sfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/HEAD/BIN/7zSFX/7zSD.sfx
--------------------------------------------------------------------------------
/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/HEAD/BIN/7zSFXLP/7zSDm.sfx
--------------------------------------------------------------------------------
/BIN/NDP/DisplayIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/HEAD/BIN/NDP/DisplayIcon.ico
--------------------------------------------------------------------------------
/BIN/NDP/LP/DisplayIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abbodi1406/dotNetFx452W7/HEAD/BIN/NDP/LP/DisplayIcon.ico
--------------------------------------------------------------------------------
/BIN/NDP/netfx.xsl:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/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 -I %_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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/wix3112rtm/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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
--------------------------------------------------------------------------------