PDA

View Full Version : Compact Framework 3.5 for Windows CE



theDanster
07-13-2009, 03:16 PM
I see that there was an update to handle the CF 3.5 for all PC based installs. I downloaded that and it did not add a new requirement for a smart device project.
Is there a prereq that will install it?

I am also in need of the corresponding SQL Server CE 3.5 prereq.

Thanks
DAN

DebbieL
07-14-2009, 08:08 AM
Have you tried the procedure that is described in KB Q111164 (http://support.installshield.com/kb/view.asp?articleid=Q111164)?

theDanster
07-14-2009, 11:28 AM
Thanks for the reply.

Couple things:
1) The article references these products:
InstallShield 11.5 Express, InstallShield 11.5 Premier, InstallShield 11.5 Professional, InstallShield 11 Express, InstallShield 11 Premier, InstallShield 11 Professional, InstallShield 12 Premier, InstallShield 12 Professional, InstallShield 2008 Premier, InstallShield 2008 Professional

IS2008 Express was not listed.

2) I see the the INI section and the sourcefolder of:
SourceFolder=<CompactFrameworkSDK>\v1.0.5000\Windows CE\wce400\armv4;<CompactFramework2SDK>\WindowsCE\wce500\armv4i;<SQLClient20>\wce500\armv4i;<SQLDev30>\wce500\armv4i;<CompactFramework2SDK>\v1.0\WindowsCE\WCE500\ARMV4i
So, do I add a: <CompactFramework3SDK> ... and this reference will look into the registry for the .NETCompactFramework\v3.5.0.0 registry key?

DebbieL
07-15-2009, 01:00 PM
I found out that InstallShield 2008 (any edition) does not have support for adding new major versions (such as .NET Compact Framework 3.5). To work around this limitaiton, you could consider changing the hard-coded path from something like this:
SourceFolder=<CompactFrameworkSDK>\v1.0.5000\Windows CE\wce400\armv4
to this:
SourceFolder=C:\MyPathToRedistributable

So, basically, you can change the .NET Compact Framework 1.0 or 2.0 entry to point to the .NET Compact Framework 3.5 redistributable location by hard-coding the path. However, the label in the redistributable list of the Smart Device Wizard cannot be changed. Also, InstallShield can only support two of them in a project.

With InstallShield 2009 and later (all editions), it is no longer necessary to use hard-coded paths for new versions of the redistributables that are released after that version of InstallShield has shipped. (When you install Microsoft's SDK, it creates registry keys that specify the path of the SDK. You can set a path variable in the Settings.xml file that is installed with InstallShield to that SDK path that is defined in the registry. Then you can use that path variable in the NetCF.ini file to tell InstallShield where the .cab files to be included in the build are located. You can also modify the Settings.xml file if you want the Smart Device Wizard/Windows Mobile Wizard to list the new versions.)

Sorry about the confusion! I hope that helps.

theDanster
07-16-2009, 09:31 AM
Thanks for the reply.

It seems odd that InstallShield 2008 does not handle a .Net framework that was released in 2007? Why didn't InstallShield have a mid-year patch that would have handled this.

From reading the link you provided before, doesn't IS use registry values that Microsoft creates and uses for the .Net settings? If I change those, won't that possibly lead to other problems? Or, are you saying that I can "hard code" a path for the proper redistributable?

What if .Net 1 ( or 2) is installed, wouldn't that stop InstallShield from applying the .Net 1 framework? Does installshield always install whatever is in the prerequist section? Or, by changing the path to the new redist, that would somehow know that it is not the same .Net framework that is currently installed?


DAN

DebbieL
07-20-2009, 02:46 PM
Sorry for the confusion. The NetCF.ini file that is installed with InstallShield 2008 includes support for only two path variables: <CompactFrameworkSDK> (for .NET Compact Framework 1.0) and <CompactFramework2SDK> (for version 2.0). For those path variables, InstallShield looks at the registry key to find out the location of the .cab files from the MS SDK. InstallShield 2008 doesn't have support for adding more path variables; therefore, you would need to eliminate the path variables from the NetCF.ini file and instead use hard-coded paths (so that InstallShield wouldn't check the registry for the .cab file locations of other versions of the .NET Compact Framework). InstallShield 2009 and later is more flexible, since it is easier to add support for additional redistributables after InstallShield has shipped.

About this:

What if .Net 1 ( or 2) is installed, wouldn't that stop InstallShield from applying the .Net 1 framework? Does installshield always install whatever is in the prerequist section? Or, by changing the path to the new redist, that would somehow know that it is not the same .Net framework that is currently installed?
Editing the NetCF.ini file changes the build time behavior of InstallShield 2008 (so that the appropriate .cab files get included into the installation. It does not affect the run time. So, if you replace the version 1 path variable and path with the version 3.5 location, InstallShield 2008 would be able to include the appropriate .cab file in your installation. At run time, the 3.5 version is installed if appropriate.