Jump to content

[Tutorial]Modify an offline msi installer for administrative install


Recommended Posts

Posted (edited)

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

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

I'll view mst file now.

Edited by YumeYao

Posted (edited)

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
Posted

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.

Posted
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.

Posted

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?

Posted

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.

Posted (edited)

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
Posted

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

Posted
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.

Posted

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?

Posted

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.

Posted
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.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

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