Jump to content

IE7 RunOnceEx Solution


theunknown

Recommended Posts

As im sure we're all aware by now, IE7 seems to break RunOnceEx. Given the large dependency i have on the feature (RIS, 350+ Machines With Many Different App Configs) i set about finding a solution so i could install IE7 at the T-13 stage and have my apps installed at first login. The solution's reasonably simple, grab a copy of IERNONCE.DLL from before IE7 (Latest I Have is 6.0.2900.2180) and replace the one found in the IE7 installer with that version. Setup completes successfully without breaking the usefull RunOnceEx keys.

I'm aware nLite can integrate it (reportedly without breaking RunOnceEx), but im not a fan of nLite's method's. So until a better solution is devised this will tie me over.

Hopefully someone finds the information above useful. If not, no harm done.

Regards, theunknown

Edited by theunknown
Link to comment
Share on other sites


As im sure we're all aware by now, IE7 seems to break RunOnceEx. Given the large dependency i have on the feature (RIS, 350+ Machines With Many Different App Configs) i set about finding a solution so i could install IE7 at the T-13 stage and have my apps installed at first login. The solution's reasonably simple, grab a copy of IERNONCE.DLL from before IE7 (Latest I Have is 6.0.2900.2180) and replace the one found in the IE7 installer with that version. Setup completes successfully without breaking the usefull RunOnceEx keys.

I'm aware nLite can integrate it (reportedly without breaking RunOnceEx), but im not a fan of nLite's method's. So until a better solution is devised this will tie me over.

Hopefully someone finds the information above useful. If not, no harm done.

Regards, theunknown

Your idea is a living reality.. vist my repository for a switchless installer based on your instruction

thanks for sharing

shark

Link to comment
Share on other sites

Thank you for the tip I made a SFX file with this version of iernonce.dll 6.00.2900.2180 (xpsp_sp2_rtm.040803-2158).

I also added a another VBS script file that will test to see if the RunOnceEX works. You will not need to reboot or log off this will run automatically.

Script that places the files

Const OverwriteExisting = True 
Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Act : Set Act = CreateObject("Wscript.Shell")
Dim WDir : WDir = Act.ExpandEnvironmentStrings("%SystemRoot%\System32")
Dim Loc : Set Loc = Fso.GetFolder(Fso.GetParentFolderName(WScript.ScriptFullName))
Dim Run1 : Run1 = "\iernonce.dll"
'/---------------------------------------------------------------------------------------------
'/-> Start The Replacement Of The File
If Fso.FileExists(Loc.Path & Run1) Then
Fso.CopyFile(Loc.Path & Run1), (WDir & Run1),OverwriteExisting
Fso.DeleteFile(Loc.Path & Run1) : Fso.DeleteFile(WScript.ScriptFullName)
Act.Popup "Completed IE7 Fix For RunOnceEX" & vbCrLf & "Move This File : " & _
Loc.Path & Run1 & vbCrLf & "Move To Here : " & WDir & Run1, 7, "Completed", 0 + 32 + 4096
'/---------------------------------------------------------------------------------------------
'/-> Start The Test To Confirm The Fix Work
Act.Run(Chr(34) & Loc.Path & "\R1TestCmd.vbs" & Chr(34)),1,True
Fso.DeleteFile(Loc.Path & "\R1TestCmd.vbs"),True
A = Fso.DeleteFolder(Act.ExpandEnvironmentStrings("%Systemdrive%\Apps"),True)
Else
Act.Popup "Error : This File Can Not Be Found!" & vbCrLf &Loc.Path & Run1 & _
vbCrLf & "Re Run The SFX Again To Run The Fix", 7, "Missing", 0 + 32 + 4096
Fso.DeleteFile(WScript.ScriptFullName)
End If

Script that checks to see if the RunOnceEx Works

Dim Fso   : Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Act : Set Act = CreateObject("Wscript.Shell")
Dim Apps : Apps = Act.ExpandEnvironmentStrings("%SystemDrive%\Apps")
'/---------------------------------------------------------------------------------------------
'/-> Check For The Folder
If Not Fso.FolderExists(Apps) Then Fso.CreateFolder(Apps) End If
Dim Cnt, R1Cmd,R1,R2,TS
'/---------------------------------------------------------------------------------------------
'/-> Where The Test Cmds Are made
Do
Cnt = Cnt + 1
Set TS = Fso.CreateTextFile(Apps & "\Test_" & Cnt & "_RunOnceEX.cmd")
R1Cmd = R1Cmd & "Test_" & Cnt & "_RunOnceEX.cmd---"
TS.WriteLine( "@Echo Off && CLS && Mode 65,5 && Color F"& Cnt & vbCrLf & "Echo." & vbCrLf &_
"Echo Testing -^> Test_" & Cnt & "_RunOnceEX.cmd" & vbCrLf &_
"ping -n 3 127.0.0.1>nul" & vbCrLf & "Goto EOF" & vbCrLf & "Exit")
TS.Close
Loop Until Cnt = 3
'/---------------------------------------------------------------------------------------------
'/-> Where The RunOnceEx Is Made
Cnt = 0
R1 = Split(R1Cmd ,"---" )
R2 = Fso.GetFolder(Fso.GetParentFolderName(WScript.ScriptFullName))
Set TS = Fso.CreateTextFile(R2 & "\Run1Ex_Test.cmd")
TS.WriteLine "@Echo Off && CLS && Mode 65,9 && Color F9 && Title Testing RunOnceEX"
TS.WriteLine "Set Install=%Systemdrive%\Apps"
TS.WriteLine "SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx"
TS.WriteLine "REG ADD %KEY% /V Title /D ""The Install Section"" /F" & vbCrLf
For i = 0 to UBound(R1) - 1
Cnt = Cnt + 1
TS.WriteLine "REG ADD %KEY%\00" & Cnt & " /VE /D ""Test 0" & Cnt & " RunOnceEX"" /F"
TS.WriteLine "REG ADD %KEY%\00" & Cnt & " /V 1 /D ""%Install%\" & R1(i) & """ /F"
TS.WriteLine "REG ADD %KEY%\00" & Cnt & " /V 2 /D ""%Comspec% /C Del %Install%\Test_" & Cnt & "_RunOnceEX.cmd"" /F"
TS.WriteLine ""
Next
TS.WriteLine "start /w rundll32.exe iernonce.dll,RunOnceExProcess" & vbCrLf
TS.Close
'/---------------------------------------------------------------------------------------------
'/-> Run The RunOnceEx.Cmd
Act.Run(Chr(34) & R2 & "\Run1Ex_Test.cmd" & Chr(34)),0,True

Fix_IE1_R1.exe

Link to comment
Share on other sites

Hi,

I used Fix_IE1_R1.exe in my current IE7 integrated system and RunOnceEx worked

but, after extracting the IE7 intallation file (which nLite integrates) and replacing the file IERNONCE.DLL myself I can't recab it again.

How do I recompress IE7 again?

or

What commands to what files does nLite uses to integrated?

or

What am I doing wrong?

GIL

Link to comment
Share on other sites

Does anyone know if Microsoft intentionally designed RunOnceEx to stop processing with IE7?

Replacing the iernonce.dll from an IE6 version works but how long will it be before Windows Updates puts back the IE7 version, thus stopping our RunOnceEx process again? The reason I’m concerned about this is that I use RunOnceEx after initial setup to deliver applications.

Vista also seems to ignore values in the RunOnceEx registry key. I'm thinking a lot of us will need to chain applications a different way soon?

Link to comment
Share on other sites

Hi Shark007,

Is the switchless installer on your repository working?

All files there are awesome, would be great if this one works too.

TIA,

Muaitai

Actually, before i posted the Installer,

I tested it on a virgin installation of XP with SP2 with no other updates.

In this situation, it does work.

Using it on my Updated CD (RyanVM updated) , I'm finding it doesnt work. :(

anyone else try the IE7 Installer? Whats your experience with it ...

shark

Link to comment
Share on other sites

it is supposed to be released via automatic updates on november 30. maybe that new release will accept the integrate switch or improve the current setup.

i think the runonceex thing is broken because of security features but i think microsoft is doing a terrible job with both WMP11 and IE7 setups.

BTW, have anyone tried this switchless setup using an xpcd with all windows updates installed (via svcpack.inf)?

Edited by elajua
Link to comment
Share on other sites

Couple of observations on IE7 installation, and reinstallation of version 6.0.2900.2180 (version 6 for simplification) of iernonce.dll, on an existing Windows installation:

First, the file iernonce.dll is not updated until after Windows restarts. After running IE7 install, and before restarting, version 6 of iernonce.dll remains in the %windir%\System32 folder. If you were to overwrite the file prior to a restart, you would accomplish nothing because the IE7 install doesn't complete until the restart has been performed, and version 6 is not replaced by version 7 until this restart.

Second, the version of iernonce.dll is not updated in the %windir%\System32\dllcache folder, although other IE files in the dllcache folder are updated to their version 7 counterparts. iernonce.dll remains version 6.

Don't know how this would affect an install of IE7 at T-13 - is it fully installed then? If not, replacing iernonce.dll immediately after installing IE7 may ultimately fail.

Link to comment
Share on other sites

What makes you guys think you have to replace IERNONCE.DLL at all?

Has anyone tried:

"RUNDLL32.EXE X:\$OEM$\IERNONCE.DLL,RunOnceExProcess" - where "X:\$OEM$\IERNONCE.DLL" is the path to the v6.xx of the DLL on your unattend cd? You could put that into HKLM\Software\Microsoft\Windows\CurrentVersion\Run like this in RunOnceEx.cmd:

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /V "RunOnceEx" /D "RUNDLL32.EXE %~d0\$OEM$\IERNONCE.DLL,RunOnceExProcess" /F

And you could delete it again later from cleanup.cmd:

REG DELETE HKLM\Software\Microsoft\Windows\CurrentVersion\Run /V "RunOnceEx" /F

Edited by Plamdi
Link to comment
Share on other sites

  • 3 weeks later...

@Plamdi

I use this method and I've got no problems intergrating IE7.

I must say I'm installing IE7 with runonceex. not at t-13

The only problem I have is with HTA files.

Before IE7 its opened with the right size now its full screen :(

Edited by The Glimmerman
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...