.NET CF + XmlReader + DTD? - Windows Mobile Software Development

Alright, this may sound like a really stupid question, but...
I just started writing my first toy application for .NET CF and I got stuck with the following problem:
I'm trying to read a xml file using XmlReader, but the Read() method throws a NotSupportedException as soon as it encounters <!DOCTYPE... Apparently, in desktop .net, you can control this behavior with the ProhibitDtd property, but this option is missing in Compact Framework.
Surely there must be an easy way around this - I mean, reading xmls with embedded DTD is a common task, right?

It appears that the only way to get around this is to manually check your XML for a DOCTYPE and stripping that before you pass it to the XmlReader

Related

Licenced Software CAB conversion

Does anyone know if you can take a piece of software that you have purchased in CAB format, with a Licence Key and change it into a package?
Since the software isn't OEM is it still the same method to create a package?
Any Takers?
This cant be to much of a hard question!!! can anyone answer? please
Tried it with Phone Alarm. sort of worked at the second attempt. But not quite. If I spent more time on it I reckon I could have got it to work but just don't have the time.
crazyC said:
Tried it with Phone Alarm. sort of worked at the second attempt. But not quite. If I spent more time on it I reckon I could have got it to work but just don't have the time.
Click to expand...
Click to collapse
but you can actually do it? what do you do about the activation codes etc?
The code is probably just stored in the registry or a config file after you enter it, in which case just make an RGU in the package putting the right data into the right place.
Some software might encrypt the code.. but even then usually putting the right encrypted string in the right place will work.. You may have to have the owner information set exactly the same each time (as this may be hashed into the generated key) but this isnt a problem as you can set the owner information in the RGU as well.
If you get a program where you cannot track the installation to see what happens when entering serials etc.. try SKTracker.. you can use it to watch the ppc for changes to files, databases and registry and dump those changes for analysis... so you install it.. make a reference dump.. then install/register the app.. then dump again.. then compare to see what has changed.
Some apps it wont work with of course.. but i'd imagine for most it will be possible yes. The worst that happens is you have the app installed in trial mode.. and a text file burned to the ROM with the serials you have bought in it to re-register it when needed after a hard reset.
Yeah - SK tracker is fantastic. Generally it just involves exporting a reg key from your PPC and then putting it into the cab/package along with your owner name (in some cases).
All my licensed software has been set to install via cabs including the keys. Not found any that cannot be done this way.
Problems arise with more complicated installs that involve interfacing with the system. Just using the normal conversion process with the PA cab did not work, needed to run SK tracker and fix a load more reg entries that were changed by the instll prcess. Improved it but still had issues with no sounds etc. I must have missed something, and have temporarily given up. The cab only takes a minute to install anyway.

Stupid question - are ROM files REALLY ROM files?

Hi. I am relatively new with the PDA scene and as much as I would have loved to read an answer to my question from some other thread instead of starting a new one, I could not do it cos there are none. At least in "idiot's guide" style.
To the question that is stated in the title. As much as I have understood, there are (at least) three storage areas on a device (mine being Vodafone v1520) - the ROM, the EXT ROM and the files that we see on under "My Device" in Explorer. Some of the files have been marked as "ROM" if to look at the properties and those cannot be deleted (at least I haven't found any way) but they can be overwritten (with Resco or smth). The point of my question is that when I overwrite the WELCOME.GIF file (marked as ROM file, it's VF splash screen) it does overwrite it nicely (confirmed) but when I hard reset, it's back. Although I don't understand also why after overwriting I still see the VF logo instead of my own file, that is a separate issue.
The reason I am asking this is that nobody in this forum has been able to answer me how to unlock the EXTROM part on that ASUS P550 that I have. So I thought maybe if I change the STARTER.EXE or GENERALINSTALLER.EXE to something pointless, the EXTROM part won't be installed.
Although I suspect the VF logo is displayed from EXTROM part while booting, cos there is nowhere else that same file in normal storage.
Summary:
1) Does changing files marked as "ROM" really change ROM files or is it until the next hard reset and why?
2) Does anyone know how to unlock and unhide the EXTROM part on ASUS P550?
3) Does anyone know where the VF splash screen comes from while booting?
If anyone has ANY information on these issues, PLEASE enlighten me. It seems that there are a lot of senior members who have the knowledge but are quite unwilling to share it. I don't know why but it seriously sucks that they don't reply to threads or PM. I thought this forum was for helping each other, not giggling behind the screen: "I know something You don't". At least that is the impression that I have recently gained when trying to contact people that have the knowledge.
Thanks.
aiiro
The answer to your "stupid" question - "are ROM files REALLY ROM files" - is NO.
The question is not stupid and the files are really not the files.
Actually you have only the information about the files in ROM - the name, the size and other attributes. That's it.
You are not really overwritting anything when you copy the different file with the same name to ROM.
If you somehow dump the ROM from your device - you'll get real files.
Welcome Gif can permanently be changed only in dump.
Unlocking EXTROM .... I am not sure that I got what you mean. And why do you want to do that. But do the following: with Resco Registry go to
HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\TRUEFFS_DOC2\FATFS
Change MountHidden value from 1 to 0
You will be able to see the EXTROM content.
VF splash screen definitely comes from Windows folder of your device while booting - it's a part of the ROM.
OK, thanks for a quite thorough reply, but I still don't get it then - why does Resco (or similar prog) ask to overwrite the file? OR, if it doesn't overwrite it, how do I see the new file in Windows folder and the prog looking for splash screen file does not?
The EXTROM fascinates me because after hard reset the device is installing some "Auto Installation packages" and as far as I have found out those come from the EXTROM. I suspected that the WELCOME.GIF came from there too but now I am not sure. Might have to dump the ROM somehow and look into it but there are not many people with P550 and like I said those who have, don't have the willingness to help with that.
BTW, thanks also for the tip about the registry, but I have tried all the registry tweaks that I have found (including the abovementioned) but none of the works...
Thanks again and looking forward to Your (or anyone else's) comments.
aiiro said:
OK, thanks for a quite thorough reply, but I still don't get it then - why does Resco (or similar prog) ask to overwrite the file? OR, if it doesn't overwrite it, how do I see the new file in Windows folder and the prog looking for splash screen file does not?
Click to expand...
Click to collapse
Resco has been done like you have!
Try to do the following: copy your own Welcome.gif to Windows folder. You will be prompted to overwrite. Say yes. Then simply delete that file. It will not disappear - the old version of file will become visible again. ROM is not a number of files - it is one file which contains a copy of the data that later will be written (flashing process) straight to a read-only memory chip.
(Pay attention on my words "read-only")
Imagine yourself a wall painted with a hell of 100 dollar bills. You can see them. But you cannot take one of them. You can even glue you own bill upon the drawn one. It will work. But when you wash the wall (hard-reset) - your real paper bill will be washed down and the old painted one will appear (sorry for metaphor)
BTW, thanks also for the tip about the registry, but I have tried all the registry tweaks that I have found (including the abovementioned) but none of the works...
Thanks again and looking forward to Your (or anyone else's) comments.
Click to expand...
Click to collapse
Nothing works probably cause the registry is write-protected. Unlock your registry by changing the following:
HKLM\Security\Policies\Policies\00001001 = 1
HKLM\Security\Policies\Policies\00001005 = 40
But! You would do it with the digitally signed regedit. For example - one is attached. Unzip it to your device, run it, change the security policy settings, reboot. Then try to tweak your Asus again.
The attached regedit has OEM Sign 2005 - hopefully it will work for you.
Thank You for a thorough explanation and especially for the metaphore - it was very helpful.
But about the registry - wow... I mean I haven't even heard of unlocking registry...
As usually, answers are generating new questions. The ones I have now are:
1) How come some of the registry tweaks made with Resco still work even now - like showing the clock instead of battery (changing the TBOpt key) etc and the values are still there after soft reset?
2) Resco is also digitally signed, isn't it?
3) If I use this app, will hard reset still create a clean registry? (The answer to this probably is "yes" but I still ask just to be sure).
4) Can I seriously f**k up something with this method?
Thanks in advance.
But
aiiro said:
... answers are generating new questions. The ones I have now are:
1) How come some of the registry tweaks made with Resco still work even now - like showing the clock instead of battery (changing the TBOpt key) etc and the values are still there after soft reset?
2) Resco is also digitally signed, isn't it?
3) If I use this app, will hard reset still create a clean registry? (The answer to this probably is "yes" but I still ask just to be sure).
4) Can I seriously f**k up something with this method?
Click to expand...
Click to collapse
Read your PM - sure I don't have any subscriptions, but it's OK (I mean PM) - it works.
So:
1. The point is that not the whole registry is write protected - only several "important" parts mostly in HKLM. Normally - if you change someting in HKCU - it will work even with the protected registry. The vendor only protects the keys and values that can cause some "critical" system changes.
2. If to tell the truth - I know that Resco has digital signature - but anyway the permission level of it does not allow you to modify the protected keys. So that's why I offered you to use Regedit, signed with the customizers.
3. For sure - after HardReset you will return to factory defaults completely - it means you registry will again become clean and write-protected.
4. It depends upon what you mean writing "seriously". The worst thing - to damage the bootloader, but you will never do that modifying the registry. So - feel free to do whatever you want - you will always be able to return to factory defaults.
OK, thank You very much for the explanation! I have bookmarked like 200 pages related to PDAs, which means that if even only every 10th page gets bookmarked, I have gone through thousands of pages in 4 months and I haven't stumbled on this information before. So everything You have enlightened me about here is most useful, thanks again!
I hope I will not push it but since You have been so helpful and seem to know stuff, I am risking asking some more questions. First of all, would You happen to know a good "idiot's guide to flashing ROM"? I have read those on the wiki but as they are for HTC devices and asus mobile club russia does not have any basic explanation in English, it's pretty hard to catch the idea. I know that much that there is a PC involved with some kind of programs etc, but that's about it. I don't even know what the hell is a bootloader. There also isn't any good PDA architecture drawings lying around in the net
The second question is also related to hardware. I have the Vodafone v1520 as mentioned above and it has a small annoyance - the earpiece volume adjustment during call does not work. The slider moves and I hear the clicks getting louder or quieter but the volume level of the caller voice does not change. I took it to a repair shop and they told me that it's a faulty hardware but I know that there are people with exactly the same problem in this forum and I find it hard to believe that they installed some kind of faulty earpiece on all these devices. Or is that possible? What do You think?
Thanks.
aiiro
Sorry dude but both your last questions are about the specific device - your Vodafone. To answer - I should buy Asus P550 and get an experience first. It's only 700 bucks in my country but I am not sure that I really wanna have it. My current device (pretty old now) is P525 and the next one will probably be Diamond or something better and more expensive.
Second thing - I am not IT professional - I am just a user. OK, I always use my own (cooked) ROMs but it does not mean that I can give the answers to all your questions!
OK, I knew I was pushing it a little bit and in no way did I mean that You should make some kind of spendings. I just thought maybe You had any ideas and maybe ASUS devices are similar enough that they are compatible ROM-wise with each other or something like that.
Anyway, thanks for those thorough replies - You have been most helpful! As soon as I will have some time I will try the registry things out.
Thanks again and good luck!
try to install this cab file ,I make it .you can QQ me by my QQ:421264988 my E-mail:[email protected]
i'm sorry ,I chinese ,and my English is very poor
安装这个CAB文件试试,我的手机也是P320,安装完解锁成功,但在删除程序里看不到之后安装的程序,欢迎和我交流,我的QQ:421264988 E-mail:[email protected]
对不起,我是中国人,我的英语很差
Modified registry values don't survive reboot?
Try switching the device off before reboot.
The registry is not flushed to disk at every write.
And search the net for
flushing registry pocketpc
Click to expand...
Click to collapse
newxda-new said:
Try switching the device off before reboot.
The registry is not flushed to disk at every write.
And search the net for
Click to expand...
Click to collapse
So if you reset the handheld without putting it into suspend mode before, you risk losing configuration data (registry settings)?

[Q] newbie help with framework and cab files

Hello xda developers...
First-time poster.
Advanced Beginner/Intermediate programmer attempting first Windows Mobile app.
Got a deal on a t-mobile dash off ebay and am trying to create an application or two for it for personal use.
Problem: Getting a simple program written in c# to run on a t-mobile dash.
Question: How does one create a .cab file?
I've been doing research online and windows website doesn't mention .cab at all. Some discussions i've found said it's impossible. confused.
Back Story:
The Test Application: a text box, listbox and two buttons (one adds entry in text box to list box. the other button clears items from list).
Running Visual Studio 2008 on Vista (business? not the stunted home version).
Programming in C#. For a T-Mobile Dash (HTC Excalibur?)... running windows mobile 6.x.
I coded a simple app just to see if I could get something functioning on my phone. The emulator was windows 5 (which seemed okay. all 3rd-party apps i've used are windows 5. work fine).
App ran fine in emulator; however, when I copied the .exe to phone and ran, it said the framework was too new (which seemed odd going from windows mobile 5 emulation to windows mobile 6 os).
IS root problem from .exe file (where I need .cab?)
Any advice, website links or anything would be gratefully appreciated.
Thanks all!
First of all what version of the .NET CF framework is running on the real device?
Run \WINDOWS\CGACUTIL.EXE
A popup window reports which version(s) are installed.
This is of the form [Major.Minor.Build.0]
Eg [2.0.7045.0] is .NET CF 2.0 and [3.5.9198.0] is .NET CF 3.5
If the version of .NET CF for which you have built the app, is the same as that on the device, the exe should run fine. You do not need a cab, copy the release .exe straight to the device.
Otherwise, there are two options,
1) Install the .NET CF version required on the device.
2) Change the .NET CF in the VS2008 build. This is not always easy as it it is usually selected when you create the project. See attached.
2a) It might be easier creating a new project against the correct .NET CF and the copy the old source files over.
If it lets you change the framework, you will find it in the Application side tab of the Properties of your project, (Project, not Solution). If the "Target Framework:" drop down box is greyed out, see the second image, you are stuck with 2a) above.

[PROJ] Prescription Medicines Manager v0.9.0 17-03-2011

This app is designed so that you can keep track of any medications you take on a regular basis.
When you last ordered a particular drug, how many you currently have to hand, which surgery the repeat was requested from and which pharmacy filled the prescription.
It is designed to be used for multiple patients, surgeries, pharmacies and doctors.
It was initially an Access database but I thought that migrating it to my PPC was a challenge I might be able to complete.
There will also be the ability to log doctor's appointments as well, hopefully.
All data is currently stored in an SQL-CE database.
For reasons I am currently trying to solve, when you open any secondary form with a data table and then return to the main menu you are unable to go back into any other form again.
Changed to a tabbed layout, screen shots attached.
09/02/2011
New version attached with new format SQLCE.
17-Mar-2011
Latest version attached
All data entry and editing working - I hope.
08-Apr-2011
Latest version, autoscroll and popup SIP.
Possible dependant files.
I am coding for CF2.
[Reserved] - For Comments
deedee said:
[PROJ] Prescription Medicines Manager
...medications you take on a regular basis.
When you last ordered a particular drug, how many you currently have to hand, which surgery the repeat was requested from and which pharmacy filled the prescription...
Click to expand...
Click to collapse
Thank you!
These records can be life-saving if you have them with you at the right time. I have tried many systems of keeping track, but rarely managed to have anywhere close to this much information on hand.
I have not had time to try it out properly so I do not yet have any comments or suggestions. For now, I just wanted to say THANKS!
Glad it's going to be if use to someone.
Hopefully by the end of tonight I will have a new version up with the ability to add records to each of the tables. No interlinking yet and at the moment editing is also broken but I am getting there.
deedee said:
Glad it's going to be if use to someone.
Hopefully by the end of tonight I will have a new version up with the ability to add records to each of the tables. No interlinking yet and at the moment editing is also broken but I am getting there.
Click to expand...
Click to collapse
Don't feel rushed on my account. It's great that you're interested in this project, whenever you finish will be soon enough.
Meanwhile, I'll play with it and start planning how to "feed" it my information.
Have you considered some sort of encryption? It just occurred to me that it will hold a lot of very personal information.
Again, thank you.
deedee said:
...at the moment editing is also broken...
Click to expand...
Click to collapse
I know next to nothing about programming, but would the PC editor you wrote for the W Watcher calc work for this project? That might make it easier for the user to input the information AND save you some programming...
(BTW: I was very impressed with how quickly you developed those applications! Very usable and no charge for fast delivery!)
Jesterfell said:
I know next to nothing about programming, but would the PC editor you wrote for the W Watcher calc work for this project? That might make it easier for the user to input the information AND save you some programming...
(BTW: I was very impressed with how quickly you developed those applications! Very usable and no charge for fast delivery!)
Click to expand...
Click to collapse
Unfortunately the WW editor is designed for an XML file and this app keeps everything in an SQLCE database. I am trying to find a nice, useable and, more importantly, free desktop app to edit these files and am trying a couple out at present.
While a purely PC based editor would be easier from a WM coding point it would stop the app being completely mobile and standalone.
New version added to post 1.
You can now add records.
For desktop managemnent try
SQLCE Desktop Manager
FlyHoward SDF viewer
Neither of these seem to be free though the second one does have a 14 day trial.
deedee said:
... While a purely PC based editor would be easier from a WM coding point it would stop the app being completely mobile and standalone...
Click to expand...
Click to collapse
Of course!
Sorry, I got tunnel vision and forgot the project's purpose.
What am I missing?
I have been unable to run Prescription Medicines Manager on my HTC 8925 (Kaiser) with WM 6.5.x.
When I run the EXE all that happens is that the WM wait animation plays indefinitely until I switch to another application.
Since I play with this phone a lot, I hard reset it to clear any lingering results of my modding (it's a spare phone, so no great loss). Before installing other programs, I ran PMM again, but the same thing happened.
I got the same results with an even older HTC phone running WM 6.1.
SQL desktop applications
I found some free SQL desktop apps. I was only able to get one, SdfBrowser, to read MedicalRecords.sdf and all it allowed was viewing the structure and creating a query.
I'll keep looking, but I agree with you that being totally portable is very important for this project.
LINKS: SdfBrowser --- Resources link
Jesterfell said:
I have been unable to run Prescription Medicines Manager on my HTC 8925 (Kaiser) with WM 6.5.x.
When I run the EXE all that happens is that the WM wait animation plays indefinitely until I switch to another application.
Since I play with this phone a lot, I hard reset it to clear any lingering results of my modding (it's a spare phone, so no great loss). Before installing other programs, I ran PMM again, but the same thing happened.
I got the same results with an even older HTC phone running WM 6.1.
Click to expand...
Click to collapse
Completely forgot to say, you will need to install SQL CE on your HTC.
I do not usually resort to smileys, but my lack of knowledge is frustrating!
deedee said:
Completely forgot to say, you will need to install SQL CE on your HTC.
Click to expand...
Click to collapse
I installed SQL CE with no errors but got the same lack of results. The phone did become VERY sluggish and Task Manager still showed "prjMedicalRecords" running as a process.
Does prjMedicalRecords.exe need to be installed?
I just executed it from the SD card, and then tried it from the device memory. I placed MedicalRecords.sdf in the same directory each time.
Update: After about 5 min of the WM wait animation spinning, got the following error message:
"File or assembly name 'System.Data.SqlServerCe,Version 3.0.3600.0, Culture=neutral, PublicKeyToken=3BE235DF1C8D2AD3', or one of its dependencies, was not found."
I opened the SQL CE .CAB file and it DOES contain "system.data.sqlserverce.dll" it is meant to be installed to "%InstallDir%" and the rest of the DLLs go to "%InstallDir%\v3.5". I used file explorer to look in those directories (%InstallDir%="Microsoft SQL Server Compact Edition") but did NOT find "system.data.sqlserverce.dll" in either dir.
I copied the DLL to "%InstallDir%\v3.5" and ran the program again. The same results occurred.
After soft reset, copied the DLL to "%InstallDir%" and ran PMM again. The same thing happened, long wait, then error msg.
I am falling asleep now, but will try re-installing .NET 3.5 and running PMM again. I'll let you know what happens.
I had gotten the same error before installing SQL CE but did not connect the error to PMM so I ignored it. This time nothing else was happening on the phone.
Apologies for not giving the initial steps, I am new to development and forget others need to be given the assumptions.
SQLCE needs to be installed, as you have done. PMM is just an exe, copy it to the device.
PMM and the SDF file need to be placed in \Program Files\prjMedicalRecords on the device itself. At the moment this location is hard coded and is on my list of things to do to make it "moveable". HTH
New version in post 1 that is now independent of location, just make sure both exe and SDf are in thhe same place.
deedee said:
New version in post 1 that is now independent of location, just make sure both exe and SDf are in thhe same place.
Click to expand...
Click to collapse
Sorry, Deedee. It still does the same thing.
.1. I put both files in device memory (just in case): \Program Files\prjMedicalRecords\
.2. Tried to re-install NET framework 3.5--it refused to install in either device or card memory, saying the same version was already in ROM.
.3. Re-installed sqlceppcwce5armv4i.cab
.4. Ran prjMedicalRecords.exe
After the same delay, it gave the same error.
It also gave a NET error that, because of the delay between program launch and errors, I did not associate with Medical Records before, but it only occurs after I have launched prjMedicalRecords.exe:
"The application failed to load required components. If the .NET Compact Framework is installed on a storage card, please ensure that this card is in place and launch the application again. If this fails, a re-installation of .NET compact Framework is recommended. Support info: -2147483643 (80000005)"​
Thank you for your continued interest.
Not sure what the error is pointing to but I am coding for .Net CF v2, CAB in post 2, try installing this.
OK, finally tried this on a virgin device, without using the "debug" option in VS2005 to copy the files and discovered that .NET CF2, along with SQLCE 3 and SQL CE 3 replication is needed.
All CABs are in post 2.
There is a new version hopefully out this weekend with the ability to log patient medications and doctors appointments.
Editing is still on the road map, as is deletion.
New version in post #1, CAB format as well.
Make sure all the dependencies are installed, for me this has been .NET CF2 and the SQLCE cabs.
There are bugs I am aware of but please list anything and everything. As this is my first real App any feedback is welcome.

[Q] How to deal with Self Registering Dlls while Cooking

While Cooking for LEO, many CABs has a self registering Dlls which runs fine from the cab file but when you try to convert the cab to OEM package, this dll looses it self registering functionality because there wasn't any code grabbed to the OEM package that tells the Kitchen to mark it for self registering.
Is there any solution for such a case?
To Make it clear:
I'm trying to cook "MOBiDIV_PrayerTimes_Diamond2_B15_TSD_Jun1.Cab " but the problem with the included "fileosp.dll" which requires self registration that is been automatic done while installing the .CAB
So, is there any kind of solution to do it while COOKING the ROM?
Use kheb to grab all the registry keys that are installed during the cab install/reset process. Then put them in your package. Or just search for the keys. We're talking the HKCR\clsid keys, aren't we? They're usually easy enough to find, if you dump and search your registry.
Farmer Ted said:
Use kheb to grab all the registry keys that are installed during the cab install/reset process. Then put them in your package. Or just search for the keys. We're talking the HKCR\clsid keys, aren't we? They're usually easy enough to find, if you dump and search your registry.
Click to expand...
Click to collapse
Thanks for your idea.
I did already and got all clsid and inject them in the package but still the same.
It seems emulator is behaving differently than actual device, what you think?
InCities.cdb
After ROM Booting, i re-install the Original Application, it works.
This is normal because the original application is doing something with InCities.cdb file.
I knew that my registry entries is correct because:
1- I checked everything in registry before and after my modification.
2- I checked everything before and after Original Program Change.
changes are identical
BUT
BUT
WHEN I PLAYED WITH (CHANGED) THE REGISTRY ENTRIES:
FROM
[HKEY_LOCAL_MACHINE\Software\Apps\Shared]
"\\Windows\\InCities.cdb"=dword:00000001
TO
[HKEY_LOCAL_MACHINE\Software\Apps\Shared]
"\\Windows\\InCities111111111.cdb"=dword:00000001
then copied another file as the same name
then tried to change it back to original, THE APPLICATION FAILED.......................................
So, Here is the trick but i don't know how to fix.

Categories

Resources