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

how to deploy 3.5 sp1?

I can't figure out how to get InstallShield 2009 to deploy .Net 3.5 sp1. I have downloaded and installed InstallShield sp2 which clearly states support for 3.5 sp1, but I don't see the 3.5 sp1 object anywhere.

Please help me understand how to get it to deploy for my InstallScript project. Many thanks!
Labels (1)
0 Kudos
(9) Replies
timstspry
Level 7

Hi Mark, what type of a project are you using? If you are using a Basic MSI project simply go to Redistributables under Application Data in the Installation Designer tab. You should see an entry for Microsoft .NET Framework 3.5 SP1. Make sure Object types to display is set to "All Types". You may need to download it. This ought to take care of it for you.

Tim
0 Kudos
mark_s
Level 3

Hi Tim, thanks for the response. This is an InstallScript project. There is no Redistributes, but there is an Objects section. The ".Net" object has been downloaded and is currently used in my project. The problem is that the versions available are only up to 3.5. There is not 3.5 sp1 option.

It would appear that I am missing an update. I just have no idea what update that is.

Any help would be appreciated.
0 Kudos
timstspry
Level 7

Hey Mark, I figured it out. Apparently you need to have either a Basic MSI or an InstallScriptMSI project - pure InstallScript project won't do. If you are able to convert your project to an InstallScriptMSI project you will have the Redistributables page I mentioned before and should see an entry for the .NET Framework 3.5 SP1 (web download) This would be the best option because if you want to include the framework in your installation and not rely on your end-users downloading it, you will inflate the size of your installation by over 200 megabytes.

Hope this helps you out!

Tim
0 Kudos
Greg_B
Level 3

If I wanted to redistribute the .net framework 3.5 sp1, could I create a new MSI and specify that it be included as a MM? I downloaded the standalone installer for 3.5 sp1 then extracted it and it seems to be just a bunch of files pertaining to older versions of the framework as well as the service pack.

If there is a better way to setup a deployable package for 3.5 sp1 (we are using configuration manager), I would be very glad to hear it.
0 Kudos
mark_s
Level 3

I ended up opening a support incident with Acresso to resolve this issue. Apparently InstallShield 2009 doesn't actually support .Net .35 sp1 even though I could has sworn that is what the release notes state.

I had to manually deploy the installation in InstallScript with the following line of code:
LaunchApplication(SUPPORTDIR ^ "dotnetfx35.exe", "/norestart /quiet", "", SW_NORMAL, 50000, LAAW_OPTION_WAIT);
0 Kudos
saidmr
Level 3

Hi,
I've been reading your questions and comments.
I'm working with IS2009 with an InstallScript project and I have the same problem trying to deploy .Net framework 3.5sp1.

I'm working on resolving this. And I have a couple of ideas about how to resolve this problem. My first solution (that I'm still implementing) goes around to isolate the setup for sp1 of Framework 3.5 which is included into full setup of Framework 3.5sp1.

Next, I have to include this setup into InstallScript Object Project for .Net Framework 3.5 (this project includes all necessary for validating and install .NET Framework 3.5 but not for sp1, and can be created at the end of InstallScript Object Templates for .NET package installation, either for sp1 or sp2 of IS2009. I suppose must be better last one option, according to support that Acresso offers for sp1 of .Net Framework on its updates page for sp2 of IS2009 Premium or Professional).

Is necessary testing and debugging your project, in especial over the fix that you've added for supporting framework 3.5 with sp1, by including this InstallScript Object project into your pure InstallScript project as an Object (see Objects Seccion of your InstallScript project, after you've compiled your InstallScript Object Project, you must locate an Object named InstallShield Object Installer). After you've added it to one Feature, must appear a Object Installer Wizard window this is where you can select the version of .Net framework Object what you want to use for validating and install (look for that one which shows correct path where your InstallScript Object project of .Net framework 3.5 with sp1 is located).

Finally, get an instance of this Object from your script code and use it where it would be appropiate according the logic of your pure InstallScript project. You can debug both projects with one debugging execution in this moment, by starting debugging of InstallScript project.


I hope this solution be helpful for you.

Said Miranda
SCJN Mexico
0 Kudos
saidmr
Level 3

Hi everybody,
Finally I've reached an Installscript installation with NetFramework 3.5 sp1.

My installation includes third part assemblies, MDAC, JET4, acrobat reader 9, IE6.0, NetFramework 3.5sp1 full redistributable (once files have been autoextracted for a faster installation process) and a msi setup for webservices developed for our intranet.

Ok, at the end of the day, what I've discovered about Net Framework 3.5sp1 is the following:
Net Framework 3.5sp1 requieres
Windows Installer Engine 4.5,
Framework 2.0sp2
and Framework 3.0sp2
and other tools for XML (MSXML 6.0 parser).

I supposed that all necesary for NetFramework 3.5sp1 is included in any way inside full installation file. And that is so. Once detrminated that, then I only have to know how InstallScript generated by Object Wizard over NetFramework (as commented in my last post), make sense to know what version of Netframework is installed on target system. I developed my own version of this validation info and when I know that I need to install Net Framwork 3.5sp1, I proceed to install Windows Installer Engine 4.5 object (because it is a requierement) and finally I launch the Netframework install which is located in \wcu\dotnetFramework\setup.exe (this setup is decompressed version of Install of full netframework setup file). The following line launches setup.exe and szSETUP has \wcu\dotnetFramework\setup.exe path.

// launches SETUP.exe
n = DoInstall( szSETUP, "/qb /norestart", LAAW_OPTION_WAIT) ;

------------------------------------------

The code makes sense of Netframework 3.5sp1 validation:

// DotNet35SP1Installed ----------------------------------------------
function NUMBER DotNet35SP1Installed(svVer2Inst)

NUMBER n, nzVal;
STRING szStrName, szKey, szMsg;
STRING svValor, szNombre, szDato;
INT nzLong, nzTipoDato;
begin

szKey = "Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5";

// Set the root key.
RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);

n = RegDBKeyExist (szKey);
if (n<0) then // Key was not found (NETF 3.5 is not installed)
return 0;
elseif (n=1) then // Key was found
//return 1;
else // for other cases
MessageBox("Registry cannot be accessed.",SEVERE);
return -1;
endif;

//*****************************************************
// now proceed to verify Framework 3.5 is installed
szNombre = "Install";
nzLong = -1;
nzTipoDato = REGDB_NUMBER;
if (RegDBGetKeyValueEx(szKey, szNombre, nzTipoDato, svValor, nzLong) = 0) then
szDato = svValor;
else // it wasn't found, then NetF3.5 is not installed
RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);
return 0;
endif;

// gets a number from string
nzVal=0;
if StrToNum(nzVal,szDato)<0 then
return 0; // 0 means proceed to install
elseif nzVal=1 then // proceed to check version installed
szNombre = "Version";
nzLong = 1024;
nzTipoDato = REGDB_STRING;
if (RegDBGetKeyValueEx(szKey, szNombre, nzTipoDato, svValor, nzLong) = 0) then
szDato = svValor;
// is the same as Compare() -> TRUE={LESS_THAN, EQUALS}, FALSE={GREATER_THAN}
if !Compara_Version(svVer2Inst, szDato) then
// proceed to install
RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);
return 0;
else
szMsg="Versión located of NET Framework : "+szDato;
SdShowMsg (szMsg, TRUE);
Delay(1);
SdShowMsg ("", FALSE);
endif;
else // It was not found
RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);
return 0; // proceed to install
endif;
else
if (nzVal<1) then
return 0; // proceed to install
endif;
endif;

//*****************************************************
szNombre = "SP";
nzLong = -1;
nzTipoDato = REGDB_NUMBER;
szDato="";
nzVal=0;
//*****************************************************
//*****************************************************
if (RegDBGetKeyValueEx(szKey, szNombre, nzTipoDato, svValor, nzLong) = 0) then
szDato = svValor;
RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);
else // it was not found
RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);
return 0; // proceed to install
endif;

// gets a number from string
StrToNum(nzVal, szDato);
// at least must be 1
if (nzVal>=1) then
return 1; // is installed
else
return 0; // proceed to install
endif;


end;


------------------------------------------------

At the of the Net Framework installation you have to see in Add/remove programs : NETF2.0sp2, NETF3.0sp2, NETF3.5sp2, Windows Installer Engine 4.5, MSXML 6.0 parser and the entry of you app installation.

The install time is from 3mins to 20mins, which depends of what framework versions the target machine has installed.


Sorry , if my english is not good to explain this issues.
I hope this information be usefull.

Ing. Said Miranda
SCJN Mexico
0 Kudos
TheTraveler
Level 8

You can use a Merge Module in a install shield only project. I actually do that with our current product. What Install Shield does is create a mini MSI installation around the merge module and runs it during the copy phase during the installation. If you want more details on how to do this, let me know.
0 Kudos
saidmr
Level 3

Of course, you can use Net Framework Install as a Merge Module, but you don't get more control that launch the module and maybe get an status over what the installation is doing.
If you want to get more control over what you're installing I advise you to first check prerequisites of NetFramework 3.5, because launching Netframework Install doesn't include the Windows Installer Engine version that your Netframework requieres. For exemple, NetFramework 3.5 requieres Install Engine version 4.5, NetFramework 2.0 at least Windows Install Engine version 3.1, etc.

I found information on how to determine what version of Windows Installer Engine your Target machine has, you have to validate \msi.dll
as following:
Windows Installer 3.1 (v1) 3.1.4000.1823
Windows Installer 3.1 (v2) 3.1.4000.2435
Windows Installer 4.5 4.5.6001.22159

Once you've found out you need to install Netframework 3.5sp1, first you need to check Windows Installer Engine version. If you need to install it, the target machine could need to reboot the system, you need to check that at the end of the Windows Installer Engine and if it's necessary you must allow booting the machine to after that continue your installation and Windows Installer Engine be properly identified by NetFramework 3.5 install.

By the way, as I commented in previuos posts, I launch the unpacked version of NetFramework 3.5sp1, that's why is faster than running the packed version. You can obtain this version running the full install of net Framework 3.5sp1 and watching and getting a copy of the folder where the install is unpacking the setup, generally you can found in C:\ where folder name is a large string of random letters and numbers. You will find a folder path as following: wcu\dotNetFramewrok\

Windows Installer Engine can be found as a Merge Module.
0 Kudos