How can I determine the version of the Compact Framework that is installed on my device? - compact-framework

It looks like this has a solution to my recent hand-wringing and head-ringing in trying to sort out different versions of CF on various devices so that they will all run my
CE/CF app. These writhings can be read about here and here.
That link shows a way to get an app built for an older version of the CF to run on a device which has a newer version installed. But it says:
"To determine the currently installed version
On the Pocket PC, use File Explorer to navigate to the \Windows directory and tap the cgacutil file.
A message box appears with the version of the .NET Compact Framework installed on the device."
However, Windows Explorer (there is no "File Explorer" on my Motorola 3190 device) shows no "cgacutil" in the Windows folder. The file denizens of the folder go from "ceconfig" to "charset" with no "cg*" between them.
The URL linked to above also says:
"To set an application to run on version 3.5
Determine the version number of the .NET Compact Framework running on the device."
How can I determine that? Once I know, I can supposedly add a file with the following data named [appName].exe.config to the handheld device and all will be rainbow stew/big rock candy mountain:
<configuration>
<runtime>
<compatibilityversion major="2" minor="0"/>
</runtime>
<startup>
<supportedRuntime version="v3.5.7000"/> // <= what value should this be/what is on my device?
</startup>
</configuration>
But the "v3.5.7000" should in actuality be what? I need to know how to determine that version value.
In System Properties, I can see some OS info, but not the CF version. For instance, I see:
MS Windows CE Version 6.00
UPDATE
Poking around, I noticed that there is a file on the device named "Microsoft .NET CF 2.0.LOG.TXT"
The filename indicates the CF version installed IS 2.0
So, since the .exe that works on the other device seems to be CF 1, can I use this as the contents of the [appName].exe.config file (content inside the file is more specific as to the version number):
<configuration>
<runtime>
<compatibilityversion major="1" minor="0"/>
</runtime>
<startup>
<supportedRuntime version="v2.0.7045.00"/>
</startup>
</configuration>
Will that help?
UPDATE 2
The file "Microsoft .NET CF 2.0.LOG file contains some interesting info:
25/04/2014 16:50:32: Entered Install_Init().
First Call: Yes
Previously Installed: No
Installation folder is: '\Windows'.
25/04/2014 16:50:32: Build 2.0.7045.00 created on Feb 13 2007 at 22:23:41
25/04/2014 16:50:32: Device CPU: 'ARMV4I', 05020000 (84017152)
25/04/2014 16:50:32: MOTOROLA WinCE 6.00
25/04/2014 16:50:32: AKU string : ''
25/04/2014 16:50:32: OEM info : 'MOTOROLA MC3100R'
25/04/2014 16:50:32: Our trust level is: 2
. . .
25/04/2014 16:50:32: Invoker's command line: '/noui \Windows\NETCFV2.wce5.armv4i.cab'
25/04/2014 16:50:32: Memory status, K --------------------------
25/04/2014 16:50:32: Load : 35
25/04/2014 16:50:32: Physical : 55616
25/04/2014 16:50:32: Physical free : 36440
25/04/2014 16:50:32: Virtual : 1048576
25/04/2014 16:50:32: Virtual free : 1047936
25/04/2014 16:50:32: Storage status, K -------------------------
25/04/2014 16:50:32: Available to us: 17020
25/04/2014 16:50:32: Total storage : 30080
25/04/2014 16:50:32: Available total: 17020
25/04/2014 16:50:32: -------------------------------------------
25/04/2014 16:50:32: About to process registry.
25/04/2014 16:50:32: Opened CF registry key OK.
25/04/2014 16:50:32: Looking for upgradeable installations for version '2.0.7045.00'
25/04/2014 16:50:32: Got version value '3.5.7338.00'
25/04/2014 16:50:32: Side by side version '3.5.7338.00' found and skipped.
25/04/2014 16:50:32: Added new CF version value '2.0.7045.00'.
25/04/2014 16:50:32: CF registry key closed.
25/04/2014 16:50:36: Entered Install_Exit().
Failed Dirs: 0
Failed Files: 0
Failed RegKeys: 0
Failed RegVals: 0
Failed Shortcuts: 0
. . .
25/04/2014 16:50:36: Processing alternative file: '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I'.
25/04/2014 16:50:36: Special file extension: '.-500~-500~ARMV4I'.
25/04/2014 16:50:36: File is intended for OS: -500 to -500, CPU: ARMV4I
25/04/2014 16:50:36: Device CPU: 'ARMV4I', 05020000 (84017152)
25/04/2014 16:50:36: CPU matches.
25/04/2014 16:50:36: Version MIN ignored.
25/04/2014 16:50:36: Version MAX ignored.
25/04/2014 16:50:36: Querying version of file '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I'.
25/04/2014 16:50:36: Version determined to be: 2.0.7045.0.
25/04/2014 16:50:36: Get version completed.
25/04/2014 16:50:36: Querying version of file '\Windows\cgacutil.exe'.
25/04/2014 16:50:36: Version determined to be: 3.5.7283.0.
25/04/2014 16:50:36: Get version completed.
25/04/2014 16:50:36: Suggestion: do not overwrite.
25/04/2014 16:50:36: Delete file '\Windows\.NET CF 2.0\cgacutil.exe.-500~-500~ARMV4I': done.
25/04/2014 16:50:36: Processing alternative file: '\Windows\.NET CF 2.0\mscoree.dll.-500~-500~ARMV4I'.
. . .
25/04/2014 16:50:36: Adding file 'mscorlib.dll': added.
25/04/2014 16:50:36: Adding file 'system.dll': added.
25/04/2014 16:50:36: Adding file 'system.drawing.dll': added.
25/04/2014 16:50:36: Adding file 'system.messaging.dll': added.
25/04/2014 16:50:36: Adding file 'system.web.services.dll': added.
25/04/2014 16:50:36: Adding file 'system.windows.forms.dll': added.
25/04/2014 16:50:36: Adding file 'system.windows.forms.datagrid.dll': added.
25/04/2014 16:50:36: Adding file 'system.xml.dll': added.
25/04/2014 16:50:36: Adding file 'system.net.irda.dll': added.
25/04/2014 16:50:36: Adding file 'system.data.dll': added.
25/04/2014 16:50:36: Adding file 'microsoft.visualbasic.dll': added.
25/04/2014 16:50:36: Adding file 'microsoft.windowsce.forms.dll': added.
25/04/2014 16:50:36: Adding file 'Microsoft.WindowsMobile.DirectX.dll': added.
25/04/2014 16:50:36: Adding file 'CustomMarshalers.dll': added
So the new device has both version 2.0.7045.0 and version 3.5.7283.0 installed.
The old device, according to what is displayed when Windows\cgacutil.exe is run, has 1.0.3316.00 installed.
The problematic project in question has Framework Version set to "v2.0"
The legacy runs on the old device, but not on the new...???
New builds of the source run on neither one. Since it targets Framework Version 2.0, I understand now why the new build won't run on the old device. But why not on the new one? It has CF 2 installed, which corresponds to the Framework Version targeted by the project...
UPDATE 3
I copied the file [appName].exe.config to the handheld device, in the same folder as the .exe
This is the newer (Motorola 3190) device, which supposedly has both CF version 2.* and 3.5* installed.
Attempting to run the legacy (supposedly built for CF 1.0*) exe does, indeed, behave differently with the exe.config file there. Instead of an everlasting hourglass, I get:
**.NET CF Initialization Error**
to run this application, you must first install one of the following versions of the .NET Compact Framework:
v2.0.7045.00
Contact your application publisher for instructions about obtaining the appropriate version of the .NET Compact Framework.
So it tells me to contact myself, which is not of much use.
Why did the text file indicate I had v2.0.7045.00 installed, whereas this indicates that I don't have it installed?
UPDATE 4
It's really macabre/frustrating to me that the text file indicates version 2.* is installed on the device, yet trying to run the latest version there (which has "v2.0" as the "Framework Version" property) fails to run. Hourglasses without the bla.exe.config file, fails with the err msg above with it...?!?
UPDATE 5
I also copied over the latest build of the app (against Framework Version 2) to the older device (the one with Framework 1 installed). I added a [appName].exe.config there with the .exe with these contents:
<configuration>
<runtime>
<compatibilityversion major="2" minor="0"/>
v2.0.7045.00
</runtime>
<startup>
<supportedRuntime version="1.0.3316.00"/>
</startup>
</configuration>
...but attempting to run the .exe just results in a momentary hourglass - no err msg, but no joy, either.
UPDATE 6
Experimenting further, I took the project with the opposite problem (Framework Version was v3.5, would run on the newer device, but not on the older one), and edited its .csproj file, changing <TargetFrameworkVersion> from "v3.5" () to "v2.0" (I first tried changing it to "v1.0" but got an error msg: "This project requires .NET Compact Framework v1.0, which is not installed on this machine." so changed it from "v1.0" to "v2.0"
However, that didn't help - that build also does not run on the (older) handheld device...
The err msg tells me, though, that I never before needed to create a Framework Version 1.0 build, as I don't even have that on my dev machine (yet I have previously built versions of our legacy app that did indeed run on both devices). So it seems the device itself has been "messed with" (a newer version of the Compact Framework has been replaced with an older version).
UPDATE 7
Note: The small .exe/utility that runs on the newer device still does after changing Framework Version via the .csproj file from "v3.5" to "v2.0"
UPDATE 8
To further clarify (muddify?) what's going on:
The 3090 Symbol Handheld device has CF version 1.0.3316.00 installed (according to Windows\cgacutil.exe)
The 3190 Motorola Handheld device has no Windows\cgacutil.exe, but has a file that indicates both versions '2.0.7045.00' and '3.5.7338.00' of the Compact Framework are installed on it
The last exe built on a now defunct machine / by a departed developer runs on the 3090 only. It targets CF Framework 1, presumably (since it runs on a device with that version of the CF installed)
It is very odd that that is the case, because prior to his leaving we shared code via TFS, and I was able to run the results (.exe) of the combined code on the devices, and so was he.
The Latest build from my source compiles/builds, but runs on neither the 3090 nor the 3190. It targets CF Framework Version 2.0
A minimalistic utility I built runs on the 3190 only. It targets CF Framework Version 2.0
Does all this give anybody a clue?
UPDATE 9
On this site referenced in IowaEric's answer below it says, "The .NET Compact Framework installs a utility called cgacutil.exe onto each device."
I see that file (cgacutil.exe) on one device, but not the other.
The link above also says, "On Pocket PC or Smartphone devices you can use the File Explorer "
...but I also see no "File Explorer" app[let]; I have Windows Explorer...???
UPDATE 10
Aha! As mentioned in that link, it does work to go to Start > Run... > cgacutil. It tells me "...[3.5.7283.0, 2.0.7045.0]"
(on the 3190; on the 3090 it says "1.0.3316.00")
UPDATE 11
So this is what I've been able to determine about what's on the devices:
OS (Windows CE) version of 3090 == 05.00.1400
OS (Windows CE) version of 3190 == 06.00
CF versions installed on the devices:
Symbol 3090 == 1.0.3316.00
Motorola 3190 == 2.0.7045.0 & 3.5.7283.0
CF Version chart:
1.0.3316.0 == 1.0 SP2
2.0.7045.0 == 2.0 SP2

I'll be honest. I didn't read your entire question. But in response to the title question, check this question - Programatically check which versions of .NET Compact Framework are installed
I think that WinMo devices can have multiple versions of CF installed.
This site has a little table that will help you map the run time version with the CF release - http://www.christec.co.nz/blog/archives/113
This info is also stored in the registry. To view and edit the registry, you should have a registry editor in c:\program files\ce tools\bin\ I'm not sure of that path, as I'm not at my development pc right now. That might be installed with one of the windows mobile sdks or it might be part of the windows ce power toys install. Google that and you'll find it. Then search the registry for one of those version numbers and you'll have the registry path. Again, if I was at my dev machine I could just tell you. If you're still stuck I can find that for you.

Related

Task could not find "AxImp.exe" using the SdkToolsPath under Ubuntu Linux with Mono project and Rider

I have a .NET Framework (not .NET Core) C# Selenium project. It works under Windows 8.1/10.
I recently installed Rider in my new Ubuntu 18.04 instance. I installed Mono project using this guide but Rider shows 2 problems, after opening it up:
15:01 Project 'selenium_IALB' load finished with warnings: Object reference not set to an instance of an object
15:01 Project 'MICE' load finished with warnings: Task could not find "AxImp.exe" using the SdkToolsPath "/usr/lib/mono/4.5/" or the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.7.1\WinSDK-NetFx40Tools-x86". Make sure the SdkToolsPath is set and the tool exists in the correct processor specific location under the SdkToolsPath and that the Microsoft Windows SDK is installed at (2686:5)
I found few questions answered here of how to resolve that problem on Windows for example but it says to install Windows SDK... which is not allowed on Ubuntu i guess (as i found).
As it is shown on the screen below, i have problems with some classes (yellow warning sign). In code it looks like they are missing.
The question is if it is normal that i have that "AxImp.exe" problem under Ubuntu and if yes, how can i solve it? It also does not work on Linux Mint.
EDIT: I resolved the issue of missing reference to those "yellow signed" classes. I've just change their names in the solution folder (ie. helpers.cs -> Helpers.cs). However, missing "AxImp.exe" file is still a problem and the solution does not compile.

PHPStorm crashes for no apparent reason

I am using PHPStorm 9 and crashes all the time.
I checked for logs but it does not report anything.
What can I do to debug it?
Edit 1
The app is fresly installed, on freshly formated PC, with fresh installed and updated java.
Also I tried to increase the allocated RAM but each time the app starts returns my values to default.
Edit 2
I am using the 64bit version which demanded an external jdk since there wasn't provided by the app.
I installed the 8.60 X64 java and add to my user and system vars on windows 10.
Edit 3
I am using Eset's nod32.
This is a notice that shows when I load the app.

I want to add safari webdriver extention to safari on windows 8 64 bit machine

I want to add safari webdriver extention to safari on windows 8 64 bit machine.
When I am installed safari browser with version 5.1.7. It is automatically get updated to
webdriver extention but on another machine I am not able to add same webdriver extention.
Refer a figure http://imsardine.simplbug.com/note/selenium2/drivers/safari.html
I want to add same extention to same windows 8 64 bit machine where windows update are off.
On that machine we can not turn windows update off. When I am searching for update I am unable
to find that extention.
Apple has stopped updating Safari on windows...so you have to follow this work around to get it updated to the latest version...
If you are still using Safari 5.1 for Windows (e.g. for the excellent font smoothing), you can keep up with modern web browsers by upgrading its WebKit engine to the latest version released by Apple.
Just follow these steps:
If you have iTunes already installed, go to step 5.
Download the latest release of iTunes for Windows.
Open the downloaded file iTunesSetup.exe in an archive manager, like 7-Zip or WinRAR.
Extract the file AppleApplicationSupport.msi and run it. Complete the installation.
Copy the folder C:\Program Files (x86)\Common Files\Apple\Apple Application Support (or without (x86) when on 32-bit system) to C:\Program Files (x86)\Safari and merge with the existing Apple Application Support folder.
When you restart Safari, you will notice much better HTML5 & CSS3 support (319 -> 342 points in HTML5 Test) and JavaScript performance. Enjoy!

Can't install CloudBees SDK onto Windows 8

I seem to have some problems initialising the CloudBees SDK locally to be able to run a simple application.
I've downloaded the SDK, added the required paths; everything ok up to the point where I am trying to execute the bees run command from my newly created application folder.
The error I get seems related to the JDK installation on my computer - JAVA_HOME is pointing to C:\Program Files\Java\jre7 and not to jdk .
I've checked all the local PATHS and they seem ok.
By the way I am using Windows 8.0 Enterprise 64 bit.
Fully uninstalling Java from my system followed by installing only the 64bit version and recreating System paths seems to have fixed the problem.

NSIS detection of a 32-bit process in Win 7 x64

I have a rather common task for my NSIS installer - to find out if Firefox is running before the install, and ask the user to close it. But I haven't yet found a plugin that works for Windows 7 x64. I have tested Processes, FindProcDll, nsProcess - they all failed to detect the 32-bit firefox. I'd be grateful for any ideas where to look next.
Update: Actually, I couldn't detect the 64-bit firefox either with any of these plugins.
FindProcDLL worked fine for me on 32 and 64bit systems.
I tried to find 32bit process and 64 bit processes and both were fine.
nsProcess works just fine for me. It also seems to be the most recently updated of the plug-ins you listed, so that's why I tested with that one. I'm using Win 7 x64 and confirmed in Task Manager that Firefox showed as "firefox.exe *32"
!include nsProcess.nsh
...
${nsProcess::FindProcess} "firefox.exe" $R0
${If} $R0 == "0"
# it's running
${EndIf}
Possible return codes:
0 Success
603 Process was not currently running
604 Unable to identify system type
605 Unsupported OS
606 Unable to load NTDLL.DLL
607 Unable to get procedure address from NTDLL.DLL
608 NtQuerySystemInformation failed
609 Unable to load KERNEL32.DLL
610 Unable to get procedure address from KERNEL32.DLL
611 CreateToolhelp32Snapshot failed