how to let user instll: System_SR_de.cab

J

Jon Skeet [C# MVP]

Ilya Tumanov said:
All errors are _your_ errors even if thrown from somebody else's code.
This is because these errors are result or _your_ actions.

Say, there's error in SMTP function. This is because _you_'re using SMTP
and something gone bad.
It's up to you to catch these exceptions and take corrective action and/or
display a high level message to your customer.

This message can not be technical like messages in System.SR.
It should explain what's going in terms your customers would understand.
You should also suggest corrective action if you can.

For example, you get System.IOException on attempt to read e-mail.
You should not just print out exception message (which would be "Unable to
read data from the transport connection").

Instead, you should:

1. Retry couple times.
2. If unsuccessful, print out message like this: "Could not get mail from
the server, please try again later or contact support at 555-1234".

And then support has the problem of not having the detailed error
message. If you could *optionally* also get the "Unable to read data
from the transport connection" that could quite possibly be helpful to
the support department.
Bottom line: your customer's don't need System.SR as it contains technical
messages for developers they would not understand.
It's up to you to provide adequate error description.

I disagree with this strongly. While it is certainly true that you
should give customers a non-technical error message, that *doesn't*
mean that they don't need System.SR. Our app, for instance, will log
exceptions, and the logs will be propagated to the server. This means
that any error messages can be read by a system administrator and, if
necessary, passed on to our support department.

The idea that a user app doesn't need to be able to get a detailed
technical error message is a really bad one, IMO. There's a difference
between presenting the user with it by default and being *able* to get
to it for troubleshooting purposes.
 
A

Alex Feinman [MVP]

The short answer - yes, you can do it.
In addition one of the people on the Compact Framework development team was
kind enough to point me to a file redist.txt that is shipped with Visual
Studio (and is installed into the Visual Studio directory), which lists all
redistributable components shipped with Visual Studio:

---excerpt---
netcf.all.wce4.armv4.cab
netcf.all.wce4.armv4t.cab
netcf.all.wce4.mips16.cab
netcf.all.wce4.mipsii.cab
netcf.all.wce4.mipsii_fp.cab
netcf.all.wce4.mipsiv.cab
netcf.all.wce4.mipsiv_fp.cab
netcf.all.wce4.sh3.cab
netcf.all.wce4.sh4.cab
netcf.all.wce4.x86.cab
netcf.core.ppc3.arm.cab
netcf.core.ppc3.mips.cab
netcf.core.ppc3.sh3.cab
netcf.core.ppc3.x86.cab
netcf.core.wce4.armv4.cab
netcf.core.wce4.armv4t.cab
netcf.core.wce4.mips16.cab
netcf.core.wce4.mipsii.cab
netcf.core.wce4.mipsii_fp.cab
netcf.core.wce4.mipsiv.cab
netcf.core.wce4.mipsiv_fp.cab
netcf.core.wce4.sh3.cab
netcf.core.wce4.sh4.cab
netcf.core.wce4.x86.cab
System_SR_chs.CAB
System_SR_cht.CAB
System_SR_de.CAB
System_SR_enu.CAB
System_SR_es.CAB
System_SR_fr.CAB
System_SR_it.CAB
System_SR_ja.CAB
System_SR_ko.CAB

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

As you can see, these files are indeed redistributable. The only catch is
that you are not allowed to break them and include specific DLLs directly
into your project. Instead you are expected to include a complete CAB. The
technique of installing it is actually no different from any other multiCAB
installation (e.g. when you install CF, Sql CE and your app)
 
B

Boris Nienke

I disagree with this strongly. While it is certainly true that you
should give customers a non-technical error message, that *doesn't*
mean that they don't need System.SR. Our app, for instance, will log
exceptions, and the logs will be propagated to the server. This means
that any error messages can be read by a system administrator and, if
necessary, passed on to our support department.

The idea that a user app doesn't need to be able to get a detailed
technical error message is a really bad one, IMO. There's a difference
between presenting the user with it by default and being *able* to get
to it for troubleshooting purposes.

That's 100% the point! And that's why i have two options:
- deploy the System_SR in the language i need or at least in english
- rewrite the complete System_SR by myself...

will see ... until i have a solution i have to live with less
information on errors :'(

Boris
 
B

Boris Nienke

GREAT - YOU ARE SOOOOO GREAT!!! You really made my day!!!!!

COOOL! Thanks Thanks THANKS!! And please contact the "people on the
compact Framework Team" and show them my THOUSANDS THANKS :))))

Boris

.....so great... :))
 
I

Ilya Tumanov [MS]

Boris,

As you probably know by now, System.SR is redistributable, so you CAN
package it with your product.
You can not break CAB file open, though, as that would be a license
violation.

Anyway, that does not invalidate my point.
You have to handle exceptions properly, not just show message from
System.SR.

As to your example, there was a bug in CF networking code which would throw
exception on a worker thread you could not catch.
That has been fixed in SP2, as far as I remember. You should be able to
catch and process all exception.

Best regards,

Ilya

This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
From: Boris Nienke <[email protected]>
Subject: Re: how to let user instll: System_SR_de.cab
User-Agent: 40tude_Dialog/2.0.10.1de
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
Date: Tue, 20 Jul 2004 09:18:00 +0200
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.compactframework
NNTP-Posting-Host: 217.5.221.2
Lines: 1
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.compactframework:57755
X-Tomcat-NG: microsoft.public.dotnet.framework.compactframework

#1/2:

For example, if you're using SMTP code, it's pretty easy to figure out
there might be some network related exceptions.
You might not know exactly why it's failing (may be all Cisco routers gone
mad), but you can figure out what to do if something failed.

And yes, you're ultimately responsible for all exceptions (unless there's a
bug in our/3rd party code and exception is thrown in error).
You're getting an exception because you did something and that operation
can not be performed properly.

Example:
- i have a MDA-I with WM2003 installed
- The user opens a connection to the internet
- The user makes something wrong because he selected the WAP connection
instead of the GPRS-connection!

- now the code tries a SMTP.ResolveHost(MyHostName) (something similiar)
- i have a Try-Catch around that!
- BUT: after a timeout the whole application stops with a full-screen .Net
Error message
- WITHOUT the System_SR there is just "Assemblyname of ressource not found"
which implies, that there's something wrong with MY code and the error
(halt!) comes from that
- But WITH the System_SR there comes a very clear error-message that
describes why the system is stopped (havn't got the long text in my mind
but when i read this it was really clear - for the customer too!)

Well... here i DO HAVE a Try-Catch but i'm NOT ABLE to catch this error!
Without System_SR i would never have searched in the connections because i
thought it was my fault (because there is a try-catch i never thought the
application could HALT in any way at THIS point, so i searched all over the
code.... until i installed System_SR and saw what was going wrong!)

And yes, you could do much better than "something bad happened while
resolving a DSN".

see above: in some (many?) cases i can not :'( ...
Now, how would you know which exception to expect? Easy, it's all in the
documentation.
For example, let's take a look at Dns.GetHostByName() documentation: [...]
Aha, here's the list of exceptions you can expect and thus have to process.
Yes, it's not your code and you have no sources, but you know what to
expect from it.

yes - right - but how could i write an exception-handler that handles such
hard HALTs as described above to give the user a better understanding of
what happend?

And why the hell should i code KBs or maybe MBs of own exception-handlers
(and surely will miss some) if it's allready build into the system? That's
really strange

It makes sense to catch errors and give clear messages to the customer
where i except something could go wrong.
But in the else-cases of the catch-clauses i have to display the message of
the exception - at least to write it into a log... but HERE is the point,
that in these cases i simply get NO message withouth System_SR - that makes
searching a error a bit hard because as a developer you cannot always
recreate the error in your own environment - so you need the logs from the
user... but without text? I may know where it happens but not why...

#3.
You're developer; this is why System.SR seems to be good enough to you.
Too bad, it's useless to your customers.

it's not ;-) the texts are really good!
#4
I do see your point. I'm sorry it's not redistributable.

:'( that's really TOO SAD! You are absolutely sure about that?
Do you have a link where this is described?

Boris
 
P

Pavel

Hello Alex

First I present my excuse because my question doesn't concern this thread,
but another one, namely "Cannot connect to PPC 2002 with VS.NET 2003".
In this thread you said that it is necessary to have toolhelp.dll on device.
And only mean to check its presence is utility CeFileViewer from Pocket PC
2002 SDK. I installed this SDK, but don't see CeFileViewer. Where could I
find it?

Thank you in advance.

Pavel
 
A

Alex Feinman [MVP]

It is actually installed with Embedded Visual Tools. I apologize if I
sounded like it is installed with the SDK
 
B

Boris Nienke

As you probably know by now, System.SR is redistributable, so you CAN
package it with your product.

yeah - great news :))))
You can not break CAB file open, though, as that would be a license
violation.

i would never do that, makes no sense to me. I simply will pack this
System_SR into my installation and go... :)
Anyway, that does not invalidate my point.
You have to handle exceptions properly, not just show message from
System.SR.

We both have no conflict on this point - that's exactly what i always tell
developer: Catch exceptions on you functions. Show some helpfull messages
if it's possible and at least make a clean Application-Halt.

But you know: there will be allways some little thing you might miss or
never thought about... Sure you should "fix" this when such error occurs,
find out why, do a catch around it and try to make the application more
stable...
As to your example, there was a bug in CF networking code which would throw
exception on a worker thread you could not catch.
That has been fixed in SP2, as far as I remember. You should be able to
catch and process all exception.

Ah, good to know! I think on the clients machine is SP1 installed but not
SP2 - i will try that! If i could catch this error too it would be really
cool because in this case i really know what's wrong and can present it to
the user (like: "hey guy, what have i told you? Yes! Use GPRS - not the WAP
connection hehehe ;-)"... well, i would use a better style of telling that
*lol* )

Thank you!

Boris
 
P

Pavel

Thank you Alex.

I have found it. Its real name is cefilevw.exe and one could find it in
....\Common\Platman\bin folder of Pocket PC 2002 SDK installation.
Very nice utility.

Pavel.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top