Jump to content

[Tutorial]Modify an offline msi installer for administrative install


YumeYao

Recommended Posts


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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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. :(

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...