cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
osumatt
Level 3

Bug in .NET 2.0 SP1 prereq

There's a bug in the PRQ file for .NET 2.0 SP1 in IS2009, and I figure I would give everyone the heads up in here. Open any of the .NET 2.0 SP1 PRQ files in the prereq editor and switch to the 'Conditions' tab. Highlight the top entry (the one that looks for a specific value in the registry) and click Modify.

The bug is that it's looking at the value defined in SP in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727, but it's doing a 'Not Equal To' comparison! (The value is 1 when 2.0 SP1 is installed, and 2 when .NET 2.0 SP2 is installed).

When you upgrade .NET 3.5 to .NET 3.5 SP1, it upgrades .NET 2.0 to SP2. Now, when your users (who have .NET 3.5 SP1 installed) go to install your installation package (that requires .NET 2.0 SP1), it will tell them they need to install .NET 2.0 SP1 first (even though they have .NET 2.0 SP2)! The prereq needs changed to do a 'Greater Than' comparison rather than a 'Not Equal To' comparison.

Hope this helps someone!
Labels (1)
0 Kudos
(17) Replies
mberterm
Level 7

Thanks for the suggestion!

It has been sumbitted in IOC-000074405.
0 Kudos
MNSwiftOne
Level 4

I opened the prerequisite editor - and looking at the condition - it says the module will be executied if 'is equal to' - ok, as noted in this post this is not right.
But, I think osumatt has it backwards??? Shouldn't it be 'is less than'? Not greater than as we want to install 2.0 SP1 only if entry in this field is less than 1.

So - was I correct:
Will changing the prerequisite to 'is less than' and clicking Save - fix this problem???

This is a rather important problem and we really need to know if this would fix it. It has been 7 days since this was posted - would my fix work or do we have to wait for some patch to fix this?

Thanks,
Todd
0 Kudos
SherylSikora
Level 6 Flexeran
Level 6 Flexeran

You are correct. The condition should be "less than". This is the change that we will be implementing to fix the submitted issue # IOC-000074405.
(If my reply answers a question you have raised, please click "ACCEPT AS SOLUTION".)
0 Kudos
MNSwiftOne
Level 4

SherylSikora wrote:
You are correct. The condition should be "less than". This is the change that we will be implementing to fix the submitted issue # IOC-000074405.


Thanks for the confirmation Sheryl.
We had implemented the change and I just wanted to be sure...

Thanks.
0 Kudos
schmoli
Level 6

Note: I believe I've found another bug in the prerequisite (and dotnetfx.exe, I guess). It has no condition that Windows Installer must be 3.1 or greater (but the install fails when bundled with my installer or ran separately). By adding a [SystemFolder]msi.dll > 3.1.0.0 condition to the prq and bundling the windows installer 3.1 into my setup.exe, the install will skip the prerequisite, upgrade windows installer, reboot the machine, and then allow me to run the installer again (and successfully install .Net2.0 SP1). Unfortunately this still doesn't work for me as I would have needed it to auto-resume, but I figured I'd let this thread know about it.

edit: disregard the above, what really needed to be done is just have this checkbox checked:



"Application To Run" -> "Requires WIndows Installer engine and/or .NET Framework to be installed first." which is unchecked by default.
0 Kudos
MNSwiftOne
Level 4

Assuming you have IS2009, the Windows Installer is part of the main Installshield program - it does not need to be added - no pre-requisite is required (at least for InstallScript MSI projects).
Open the Media - Releases folder and click on your build name
Select the setup.exe tab
Under MSI Engine Location - pick Extract from Setup.exe
Under MSI Engine Version - pick Version 3.0 (requires Windows 2000 SP3 or greater)
NEXT is the important option - which is to force your installation to reboot to install Windows Installer 3.0 PRIOR to continuing the install:
Under Delay MSI ENgine ReBoot - Select No

The property info states:
The Delay MSI Engine Reboot setting lets you specify whether you want to postpone any reboot associated with installing or updating the Windows Installer engine on the target system until after your installation is completed.
Select Yes to postpone the reboot, if one is necessary. (THIS WILL cause continuing to fail which is why you made the prerequisite...)
Select No to allow the system to reboot, if necessary, immediately after the Windows Installer engine has been installed or updated and before performing your installation.

Tested - This works - my QA department got a little upset as all of a sudden there were reboots in the middle of our installs - but we now install SQL Server Express and it requires Windows Installer 3.0 - so until I changed the above option - the install would always fail on the SQL Server install part...
0 Kudos
wiggers
Level 7

This doesn't work in my setup. I see my splashscreen, followed by the PreRequisites window showing .NET 2.0 SP1. Click install and then I get a failure message box. It is only after this that I see the Windows Installer being unpacked and installed. This is followed by .NET 2.0 being installed followed by a reboot. After reboot my installation continues. .Net 2.0 SP1 never gets installed.

Why is SP1 not substituted for the original version? Why the need for the PreRequisites?

Mark
0 Kudos
_shielder_
Level 6

Does anyone know if this has been fixed yet?

Thanks


You are correct. The condition should be "less than". This is the change that we will be implementing to fix the submitted issue # IOC-000074405.
__________________
Sheryl Sikora - Senior Software Build Engineer - Acresso Software: InstallShield Team
0 Kudos
SherylSikora
Level 6 Flexeran
Level 6 Flexeran

This issue has been fixed and will be included in our next release.

I have attached the fixed "Microsoft .NET Framework 2.0 SP1.prq" file to this post. Just drop it into your InstallShield Setup Prerequisites folder (C:\Program Files\InstallShield\2009\SetupPrerequisites).
(If my reply answers a question you have raised, please click "ACCEPT AS SOLUTION".)
0 Kudos
paul4468
Level 2

I still doesn't seem to recognize that I have .net 2.0 sp1 installed.
0 Kudos
SherylSikora
Level 6 Flexeran
Level 6 Flexeran

paul2268,
I have posted a fix for you that applies only to InstallShield 2009 Express here:
http://community.acresso.com/showthread.php?p=438994#post438994
(If my reply answers a question you have raised, please click "ACCEPT AS SOLUTION".)
0 Kudos
pbsdis
Level 6

Hi,

It seems that I ran into another flaw of the prerequisite.

The primary condition of the prereq is checking for the reg key

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727


and it's SP value, but the selected condition type is 'A registry entry has a specified valeu', which means the checking focus on the value of SP, disregarding the operation selection which is not focus here.

I tried my installation with a basic W2K, which has no .NET installed at all, and the .NET 2.0 is not listed as prerequisite at install. Does that mean it passed the SP value checking? How does it handle if the quoted registry key doesn't exist at all, I mean to add another condition item to check for the existence of the reg key? Maybe there are other possible .NET 2.0 versions instead of v2.0.50727? How to check if there is any version of .NET 2.0 installed already?


Thanks,
PB
0 Kudos
pbsdis
Level 6

Hmm, I just realized that it may be not the problem of the prerequisite, but my installer project. Now the package never check or always fails checking of .NET 2.0.

I included the .prq in my project by checking the preq item, and I did see the item is included in 'ISSetupPrerequisites' folder if I create a uncompressed image. I also tested couple of different machines without .NET2, and the package didn't list the prerequisite at all.

I have the following prerequisites in my package, with the order:

MS .NET 2.0
MDAC 2.8
MS ReportViewer2005
SQL2005Express SP2

Is it possible that .NET2 conflict with any of the other prerequisites? I kind remember that the .NET2 prerequisite once prompted (worked) at the very beginning when I started to work on the project. What did I do that faked or blocked the prerequisite?

I am using IS2008 premeir though, which I don't think matter at all.

Any ideas?


Thanks,
PB
0 Kudos
DebbieL
Level 17

I don't think that the .NET Framework 2.0 SP1 prerequisite will work correctly in InstallShield 2008. I think it works only in InstallShield 2009 SP2. In InstallShield 2009 SP2, we added support to InstallShield and to the InstallShield Prerequisite Editor for a new prerequisite condition, called A registry has a specified version value. That condition is required for the .NET Framework 2.0 SP1.
0 Kudos
pbsdis
Level 6

Debbie,

I think you are right that the prq may not be compatible with IS2008 (but I still have impression that the prerequisite once worked when I first copied it to my IS2008).

What I finally did is to create my own prerequisite and make it point to the same included file (NetFx20SP1_x86.exe), but in the condition I choose to check the existence of .NET2 registry key (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727), since my product needs .NET2 without specification of SP versions.

It works fine so far.


Thanks,
PB
0 Kudos
DragonQ
Level 3

What is the actual difference between "a registry key has a specified value" and "a registry key has a specified version value"?

I've been using the former and it seems to work fine for this .NET 2.0 SP1 condition but I haven't tested it on a machine without any form of .NET 2.0 yet.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The latter (version value) does comparisons as standard dotted number versions where 1.10 is greater than 1.9 and so forth.
0 Kudos