Skip to content
View in the app

A better way to browse. Learn more.

MSFN

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Tutorial]Modify an offline msi installer for administrative install

Featured Replies

  • Author

works for me..................

EDIT: msi tested by copying windows folder(containing VC9) together.

I'll view mst file now.

Edited by YumeYao

Now seems to work, you were right from the beginning, it was the test version of the script I'm using, I didn't notice it was inserting the property in the command line. Install errors from .msi with sxs tables removed were caused because the sxs binary was no removed as predicted.

Edited by strel

RogueSpear's latest .NET 3.5 Lite release (which omits .NET 2.0 SP2 and MSXML 6 Service Pack 2) is 28MB. Using your method, could his "Lite" installer be slimmed down even more?

I'm not sure I really get what it is that you've accomplished, but judging by your excitement, I'm assuming it's something worthwhile.

  • Author
RogueSpear's latest .NET 3.5 Lite release (which omits .NET 2.0 SP2 and MSXML 6 Service Pack 2) is 28MB. Using your method, could his "Lite" installer be slimmed down even more?

I'm not sure I really get what it is that you've accomplished, but judging by your excitement, I'm assuming it's something worthwhile.

When I wrote a subtitle for this thread ".NET 3.5 installer for 34MB", I mean it's 2.0+3.0+3.5. .NET 2.0 is about 15M(compressed), so, a lited 3.0+3.5 can be as small as 34M-15M=19M. Cheers.

Good estimation. That's exactly what it is. 18.5MB 7zip, and about 19MB after turning it into an SFX.

Your method removes HtmlLite.dll, WapUI.dll, and a bunch of other files (including more DLLs) from the root directory of the MSI. Is this intentional? Are there any negative impacts as a result of this, or were these just more redundant entries?

I'm about to attempt a RunOnceEx installation of this bad boy on a freshly formated VM. Afterwards I will try uninstalling it from Add/Remove Programs. We'll see how it goes.

Does anyone know of any v3.5 applications that I can use to test and make sure everything installed successfully?

Well, all of those applications ran smoothly, so I guess it's safe to assume it installed just fine.

The only problem is that none of my .NET Frameworks are uninstallable.

Not my case. For 3.5 SP1 you can change the SystemComponent settign if this is what's causing the problem. For the rest of the versions don't know what could be the problem.

Edited by strel

  • Author

once .net 3.5 can not be removed, then it blocks .net 3.0 and 2.0 from being removed.

Dang. I can't get this thing to be uninstallable. I even downloaded your (YumeYao) version from the first post, removed .NET 2.0 (because I install it earlier), and tried that on a fresh system (with only .NET 2.0 installed), and it still won't uninstall afterwards. :(

  • Author
Dang. I can't get this thing to be uninstallable. I even downloaded your (YumeYao) version from the first post, removed .NET 2.0 (because I install it earlier), and tried that on a fresh system (with only .NET 2.0 installed), and it still won't uninstall afterwards. :(

yes it was not uninstallable because at that time I did not realize how to get it(that's why put stroke line on them). But if you have followed everything in my updated tutorial, it should work. I guess you may still work with my previous tutorial, or you've missed something, or your install script is preventing them from being uninstallable. So just attach your modified msi(s) and install script for an easy check.

I'm using RogueSpear's install script.

I removed the installation of WIC from it because you said earlier that it's not needed with SP3.

I also removed the installation of RGB9RAST_x86.msi, preferring instead to manually copy the DLL and register it (this is done by the SFX).

The meat and potatoes of the install script are as follows:

ws.Run("dotNET30SP2\XPSEPSC-x86-en-US\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("msiexec.exe /i dotNET30SP2\Netfx30a_x86.msi " & txtArg1 & " REBOOT=ReallySuppress"),0,True
ws.Run("WaitNET.exe " & txtArg1),0,True
ws.Run("msiexec.exe /i dotNET35SP1\vs_setup.msi " & txtArg1 & " REBOOT=ReallySuppress"),0,True
ws.Run("WaitNET.exe " & txtArg1),0,True
ws.Run("regedit.exe /s KB959209.reg"),0,True
ws.Run("dotNET35SP1\KB971276\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("dotNET35SP1\KB961118\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("dotNET35SP1\KB971314\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True

^where "txtArg1" and "txtArg2" are "/qb" and "/passive"

Here are my MSIs:

http://xp.xpdnc.org/files/WIP/vs_setup.msi

http://xp.xpdnc.org/files/WIP/Netfx30a_x86.msi

I've created half a dozen or so, using various methods and source files. The above ones, though, were taken directly from the official 231MB "dotnetfx35.exe" file from Microsoft. I then processed the files using Strel's program. Afterwards I ditched his install.cmd script, applied the transforms to the MSIs permanently, and used the installation script seen above.

I've also tried following the guide on an untampered vs_setup.msi without using Strel's program, just doing it manually with InstallShield, but that didn't work out either.

And I tried following the guide on RogueSpear's vs_setup.msi file ... again, didn't work.

All of these methods seem to install it just fine. I've tested with various .NET programs (including Paint.NET). The problem is that none of them yield a product that is uninstallable.

How difficult would it be for me to just take your package from the first post and make it uninstallable? Do you know what I would need to do to accomplish that?

Is this value getting 0 setting? If not set it.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}\SystemComponent

And for the error you pointed on SNMsynth, thx, I was aware of it and a couple of minor bugs also, will be fixed on next version.

  • Author
I'm using RogueSpear's install script.

I removed the installation of WIC from it because you said earlier that it's not needed with SP3.

I also removed the installation of RGB9RAST_x86.msi, preferring instead to manually copy the DLL and register it (this is done by the SFX).

The meat and potatoes of the install script are as follows:

ws.Run("dotNET30SP2\XPSEPSC-x86-en-US\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("msiexec.exe /i dotNET30SP2\Netfx30a_x86.msi " & txtArg1 & " REBOOT=ReallySuppress"),0,True
ws.Run("WaitNET.exe " & txtArg1),0,True
ws.Run("msiexec.exe /i dotNET35SP1\vs_setup.msi " & txtArg1 & " REBOOT=ReallySuppress"),0,True
ws.Run("WaitNET.exe " & txtArg1),0,True
ws.Run("regedit.exe /s KB959209.reg"),0,True
ws.Run("dotNET35SP1\KB971276\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("dotNET35SP1\KB961118\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True
ws.Run("dotNET35SP1\KB971314\update\update.exe " & txtArg2 & " /nobackup /norestart"),0,True

^where "txtArg1" and "txtArg2" are "/qb" and "/passive"

Here are my MSIs:

http://xp.xpdnc.org/files/WIP/vs_setup.msi

http://xp.xpdnc.org/files/WIP/Netfx30a_x86.msi

I've created half a dozen or so, using various methods and source files. The above ones, though, were taken directly from the official 231MB "dotnetfx35.exe" file from Microsoft. I then processed the files using Strel's program. Afterwards I ditched his install.cmd script, applied the transforms to the MSIs permanently, and used the installation script seen above.

I've also tried following the guide on an untampered vs_setup.msi without using Strel's program, just doing it manually with InstallShield, but that didn't work out either.

And I tried following the guide on RogueSpear's vs_setup.msi file ... again, didn't work.

All of these methods seem to install it just fine. I've tested with various .NET programs (including Paint.NET). The problem is that none of them yield a product that is uninstallable.

How difficult would it be for me to just take your package from the first post and make it uninstallable? Do you know what I would need to do to accomplish that?

ok.... simply you missed step 7 in my tutorial..

7. go to Property table, remove 2 entries: INSTALLLEVEL and ARPSYSTEMCOMPONENT.

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.