Running Platform Builder 5.0 on recent operating systems - windows-ce

Platform Builder 5.0 is only supported on Windows 2000 and XP.
This question is to aid those looking for a way to run Platform Builder 5.0 on more recent operating systems.
A few reasons one might want to do that:
Corporate IT policy may not permit the use of Windows 2000/XP
With time, genuine copies of Windows 2000/XP may become increasingly hard to obtain
Depending on your overall setup and requirements, might eliminate the need for using a virtual machine for Platform Builder 5.0
You may simply wish to run a more modern and secure operating system

This answer explains how to install and run Platform Builder 5.0 on operating systems it is not officially supported on.
Windows Server 2008 and 2012
This procedure has been found to work on:
Windows Server 2008 (32-bit)
Windows Server 2012
Windows Server 2012 R2
It is recommended that you install Platform Builder before joining a Windows domain. I've had some issues getting the Platform Manager components registered while logged in as a domain user. See also the description further below.
Virus protection software might prevent the installation of .NET Framework 1.1, at least this has been a problem with Symantec Endpoint Protection. You may have to remove any security products before starting the installation (these may be re-installed later, but see the note below on the Full vs. Basic version of Symantec EP).
To install PB5, start by copying the contents of the installation CD (or mounted .iso) to a local folder, from here onwards referred to as the installation folder.
Use an .msi editor (like Orca) to remove the following entries from Microsoft Windows CE 5.0.msi in the installation folder:
OS version check (Table LaunchCondition, Action (MsiNTProductType=1 OR ...)
Emulator device driver (Table InstallExecuteSequence, Action CA_InstallVMMDriver.3D2F911E_A60A_4C07_8F7D_5306DC073E9A)
From the installation folder, run, in this order
ISScript8.msi (installs the InstallShield 8.0 script engine)
dotnetfx.exe (installs .NET Framework 1.1)
Microsoft Windows CE 5.0.msi (installs Platform Builder 5.0)
The installation may appear to hang at the Registering Platform Manager components step. It should proceed after a few minutes. If it is still stuck after, say, ten minutes, and your machine is joined to a Windows domain, then kill the installer in Task Manager, leave the domain and try installing again (you can rejoin after the installation is complete).
During the installation, you will receive a warning about compatibility issues. Select Don't show this warning again and click Run the program without getting help.
After the installation has finished, add a registry entry as follows.
If installing on a 32-bit system:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools]
"SharedFilesDir"="C:\Program Files\Common Files\Microsoft Shared\"
Otherwise (installing on a 64-bit system):
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Shared Tools]
"SharedFilesDir"="C:\Program Files (x86)\Common Files\Microsoft Shared\"
Next, install Windows CE / Platform Builder updates as required (i.e. the "monthly updates" provided by Microsoft).
Optional: If any of your Windows CE targets require CJK support, you will need to update the cenlscmp tool to avoid an error during the makeimg phase. While this bug has long been fixed in Platform Builder 6.0 (PB6), the PB5 version has been left in the dust. So for CJK support you will need to copy cenlscmp from a PB6 installation, i.e. copy C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386\cenlscmp.exe to the corresponding folder in your new WINCE500 tree. Note that I've only tested the PB6 version; it is likely that newer versions would work too.
Optional: If you need support for building SDKs, you must make a copy of the Platform Builder help files, or a hard-coded assumption in the SDK builder will cause the build to fail. Copy the directory C:\Program Files (x86)\Windows CE Platform Builder\5.00\cepb\help to C:\Program Files\Windows CE Platform Builder\5.00\cepb\help.
Launch Platform Builder.
You will see a warning about compatibility issues. Select Don't show this warning again and click Run the program without getting help.
Optional: In the main window, click Tools | Customize. Click the Build OS menu once to open it. Drag the Build and Sysgen menu item out of the menu and drop it when the cursor displays a small 'X'. This will remove a dangerous command that, if clicked by accident, will require reinstalling Platform Builder. Hit Close to dismiss the Customize dialog box.
Platform Builder 5.0 is now ready to use, including the IDE itself, the build system, the help system, the debugger, and the run-time licensing tool.
Features that I haven't tested and which may or may not work include CETK and the emulator (the latter highly unlikely to work, as the emulator device driver had to be removed from the .msi).
If you use Symantec Endpoint Protection, be aware that the Full version may prevent pbxmlutils - an important Platform Builder tool - from running. This does not appear to be an issue with the Basic version.
One last hurdle is to configure the firewall to permit debugger traffic. To do this, open Windows Firewall with Advanced Security and
Under Inbound Rules, hit New Rule...
Select Program, Next
Enter the Path %ProgramFiles% (x86)\Windows CE Platform Builder\5.00\CORECON\BIN\cesvchost.exe, click Next
Ensure Allow the connection is selected, Next
Ensure Private and Domain are selected (but not Public, unless you really need this), Next
Enter a Name, e.g. "Platform Builder 5.0 debugger - cesvchost", Finish
Repeat the above with the path %ProgramFiles% (x86)\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\cemgr.exe.
Platform Builder will now be able to receive BOOTME frames, upload images, and connect to target with the kernel debugger.
Windows 7 and 8
The procedure documented above will not work for 64-bit Windows 7 or 8 (32-bit not tested).
Modifying the .msi as described makes the installation hang at the Registering Platform Manager components step. Removing the Platform Manager components from the installer causes a number of other issues, including failed registrations of the Help system and some common controls. More importantly, with Platform Manager missing it will not be possible to install any Windows CE/Platform Builder updates, making it virtually impossible to build any non-trivial CE project.
Windows 10
Not tested.

Related

Installshield sideload: app not start after install

I have a problem with a Windows 8.1 app that I want to deploy by sideloading.
I installed InstallShield premier to test it's feature, and generated an installation package that contains appx file and a test certificate file created by visual studio (associated in installshield project properties).
I need to enable app distribution in group policy settings to install.
After app correctly installs on system, i found it in start menu, but when i try to run the app, windows shows a popup that says "there is a problem with this app, contact administrator".
Target system is a Windows 8.1 Pro 32 bit PC.
Id there any other settings that I must enable on target system before install the app with InstallShield?
Thanks
There are multiple requirements for sideloading to work, documented on technet, which I've summarized here:
Activate the sideloading product key on the device OR join the device to an Active Directory domain (except for certain embedded devices which do not require either of these).
Enable the Allow all trusted applications to install Group Policy setting.
Since you don't mention it, I'm going to guess that your machine has neither the sideloading product key nor a domain membership (nor is it one of the special embedded cases), so that's where I'd start.
For more troubleshooting ideas, see some blogs like Sideloading Store Apps to Windows 8.1 Devices or How Do I Deploy a Windows 8 App to Another Device for Testing?

Remote debugging Tools Cannot Install on Surface RT Running 8.1 Preview (cannot verify digital signature)

I am trying to install Remote Tools on a Surface RT running Windows 8.1 preview. I downloaded update 2 of remote tools from Microsoft's site and when I try to run it I get the error:
Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source.
This is confusing because I downloaded the file directly from MS website and when I look at the .exe properties it says digital signatures by Microsoft Corporation.
Any insight would be greatly appreciated.
Thanks!
Update: It seems like my Microsoft Root Authority certificate is "not valid for the selected purposes" I've tried exporting a "good" certificate from another machine and importing it into the Surface machine but it still gives the same issue.
This is because your downloading the 2012 tools. You can download the 2013 preview tools here at the following link! (Be sure to choose ARM)
http://www.microsoft.com/en-us/download/details.aspx?id=40781
Would have been nice if Microsoft had given us a heads up.
Also, when I go to the 2013 download on my Surface RT running 8.1 preview, and I click on Download, no matter which option I pick (x86, x64, or ARM) it downloads the x86 version, which obviously won't work. I had to download it on a PC and copy it over using a USB drive.
This problem exists on the released version of 8.1 too.
If you previously had the vs2012 tools installed, they appear to be uninstalled during the upgrade.
Attempting to reinstall gives the above error.
That means, it's now impossible to connect to the 8.1 Surface RT from VS2012 Pro to debug an 8.0 app running on 8.1. Instead, you need to connect with the VS2013 tools and remote debugger.
For anyone who is just trying to test their App updates a surface device running Windows 8.1 RTM, I have at least found a workaround.
You can manually deploy your package to your device by coping the package content to a USB memory stick and running a already defined powershell deployment script.
Basically you need to run the normal package creation process you would do to deploy to the app store to create a package, then copy the contents of the package folder (Not the compress package itself) to your USB stick. There should be a file named Add-AppDevPackage.ps1 in this folder.
Open your USB device from your Surface RT system, right click the Add-AppDevPackage.ps1 file and select "Run with powershell". You will receive several confirmation prompts at the command line and a popup window prompting you to run with admin privileges.
This is by no means a convenient or speedy process but it worked for my purposes.
This link has more detailed information on manually deploying your app package.

Windows Compact 7: Modify existing control panel application

I am replacing a backlight driver for a device running Windows Embedded Compact 7. I'm hoping I can find the source for the application and modify it to call my driver instead of the old one.
Is there a way to tie my driver's functionality into the existing "Display" Control Panel application? Is the source available for these applications and where can I find it?
Up through CE 6.0, the source code for all Windows CE Control Panels can be found on the development PC where Platform Builder is installed at:
%WINCEROOT%\PUBLIC\WCESHELLFE\OAK\CTLPNL
I don't have a CE 7.0 installation handy to verify the location, but I suspect it's going to be in the same place or something very similar if you're using a standard shell (SYSGEN_CTLPNL). If you're using the new "Silverlight" shell ('SYSGEN_CTLPNL2`), then it's likely to be in a different location, but all of the source is still available.

Where does Windows Platform Installer (WPI) save the downloaded files in my computer?

I have a network with one server that is connected to the internet and some clients that are not.
I want to download and install Microsoft products on my server first and let the client computers download the installer later from the server.
The questions are
where does the WPI save the downloaded files?
is it possible to run WPI and force it to install the Microsoft products from the already downloaded files rather than downloading again from Microsoft's server.
Note: Assume there is no license issue, hopely :-)
It will be cached under %LocalAppData%\Microsoft\Web Platform Installer\installers if you are on Vista or above, or in the equivalent location on XP (there is no %LocalAppData% environment variable in XP).
If the products are downloaded, they will be installed again from the cached location, unless they were updated, which would change their hash and force Web PI to download them again. Moreover, you can copy the cache folder from one computer to another to the same location and Web PI will pick it up automatically and install products from cached installers.
Microsoft has released a tool called Web Platform Installer v4 Command Line which has a switch to prepare an offline installation. Quote from the page above:
Creates an offline cached copy of a specified set of products and
applications so you can install while offline
Example:
Ex: >WebPICMD.exe /Offline /Products:WebMatrix,SQLExpress /Path:c:\OfflineCache
The above will create an offline cache at c:\offlineCache that contains WebMatrix and all it's possible dependencies!
Update 2017
The link above is no longer valid (404). The page i found is
Web Platform Installer v5 Command Line (WebPICMD.exe) - RTW release
WebPI Command line
The Web Platform Installer v5 (WebPI) command line tool is now
available as part of the WebPI MSI! We've added a bunch of new
features and fix several issues, and now it's ready for it's full
release
On the page are two links
WebPI v5 x86.msi
WebPI v4 x64.msi
Microsoft has released a beta tool that will do this.
In windows 8 I found it here
%AppData%\Local\Microsoft\Web Platform Installer\installers

Is a COMException of 0x80040154 always 'Class not registered'?

Does a System.Runtime.InteropServices.COMException of 0x80040154 always mean that the class isn't registered? I'm getting a COMException which says "Retrieving the COM class factory for component with CLSID {29131539-2EED-1069-BF5D-00DD011186B7} failed due to the following error: 80040154." It's trying to load Interop.Domino.dll which is a reference I got from the COM tab of Add Reference called "Lotus Domino Objects" which points to domobj.tlb in the Notes program folder.
I wrote the code years ago - it's the only thing I've ever done with interop and it's fair to say that I never really got to grips with it.
I'm seeing this error again after moving the code to a 2008 R2 server (so it's x64). It was written on XP and run on 2003 (both x86). In order to diagnose the problem, I built a Win7 x86 (because there's no R2 x86) box and it worked. I also built a 2003 x64 box and it fails with the same error, so it looks like it's caused by moving to x64 architecture. Is there something I should do when doing interop to get x86 COM DLLs to work on x64 machines?
I had the same problem trying to build and run a .NET application on Windows 7 x64 that called interop.domino.dll, which is 32 bit only.
To resolve, I recompiled the .NET application to run specifically as x86 when run on x64 operating systems.
I was using Visual Studio 2010 Express Edition which is trickier to target specifically for x86 platforms than the paid for versions.
The solution was:
Click TOOLS > OPTIONS > PROJECTS AND SOLUTIONS
Check the box "Show advanced build configurations" and click OK
Click TOOLS > SETTINGS > check EXPERT SETTINGS to see the build configuration manager
Click BUILD > CONFIGURATION MANAGER select the platform dropdown to X86 and click CLOSE
Now rebuild the project
Pay attention to register of 32-bit components using the correct register (C:\Windows\SysWOW64\regsvr32.exe).
If you have already registered up with the 64-bit version, unregister each dll with the same version.
More help you find here Team is Going from XP32 to XP64 for .NET Development - Any Gotchas?
Good luck
There's an IBM technote that indicates that the Domino COM classes are not supported on a 64-bit OS. See https://www-304.ibm.com/support/docview.wss?uid=swg21454291 So it seems like even by compiling the code to run as x86 (as per mpownie's answer), you're still taking some chances.

Resources