Best approach to implement Help feature in Windows Desktop Application - Restrict the App knowledge base to authorize access - winforms

The best approach to implement Help feature in Windows Desktop Application, below are the list of the options I have come across:
Ref: https://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help#cite_note-2
Microsoft Compiled HTML Help is a Microsoft proprietary online help format
Can be Decompiled(Tools 7-Zip,Sumatra etc)
Predecessor Microsoft WinHelp / Successor Microsoft Help 2
Support Win 10
Ref: https://en.wikipedia.org/wiki/WinHelp
.hlp Microsoft WinHelp is a proprietary format for online help files that can be displayed by the Microsoft Help browser winhelp.exe or winhlp32.exe.
-decompile a WinHelp file into its source documents: HPJ, CNT, RTF, BMP, and SHG
-WinHelp file opens in a separate window(The Help author can control whether the Help file stores the user's settings between sessions or always opens in the default size and position.)
HAs Title, a row of Menu(File, Edit, Bookmark, Options, and Help)
Typical buttons include Contents, Index, Back, and Print, along with << and >> buttons to browse through the file. Help authors can also create custom buttons to jump to specific topics or perform other actions.
-End of support - The open-source version of winhlp32 from Wine also works on Windows 10. It is included as part of WineVDM.
Ref: https://en.wikipedia.org/wiki/Microsoft_Help_2
Microsoft_Help_2 is a proprietary format for online help files, developed by Microsoft and first released in 2001 as a help system for Visual Studio .NET (2002) and MSDN Library.
Microsoft Help 2.x is the help engine used in Microsoft Visual Studio 2002/2003/2005/2008 and Office 2007 and Office 2010
Microsoft Help 2.x file has a ".hxs" extension
An open-source "convertlit" tool can be used to decompile the hxs file.
Ref: https://en.wikipedia.org/wiki/Microsoft_Help_Viewer
Microsoft Help Viewer (HV) is the offline help system (local help) developed by Microsoft that ships with Visual Studio 2010 and its associated MSDN Library.
All the above approaches have the limitation that the compiled Help file can be decompiled and further redistributed which I want to restrict.
I want to allow access to the Knowledge-base to an only authorized users, and authorized users should also not be able to further copy or decompile the knowledge base and share it further with unauthorized users.

The short story - you cannot prevent decompiling, if you compile into WinHelp (.hlp), HTMLHelp (.chm), Help2 (.hxs) or Help Viewer files (.mshc).
Winhelp is about 30 years old and HTMLHelp about 23 years old! Please note, the decompiler for HTMLHelp (CHM files) is still an integrated part of the Windows 10 operating system.
You know Microsoft have created other help systems since WinHelp (.hlp) and HTML Help (.chm) but they are tied to various systems:
MS Help 2.0 for Visual Studio 2002/2003/2005/2008 & Office help.
AP Help for Windows Vista OS/OEM help (based on MS Help 2)
MS Help Viewer 1.0 for Visual Studio 2010 help.
MS Help Viewer 2.0 for Visual Studio 2012 & Windows 8 OS/OEM help.
These formats are not fully disclosed and documented. They are to be regarded as Microsoft internal.
Some notes:
The WinHelp (.hlp) format has been around since the very early 1990s and is superseded by HTML Help 1.x (.chm). Microsoft strongly advised you move away from WinHelp about ten years ago.
You are still well advised to use HTML HELP (.chm) for Windows application help unless integrating into Visual Studio help.
Today, however, there is an increasing transition to web-based help (e.g. using Markdown text => HTML)
Depending on your requirements you could experiment with the following ideas:
Web-based help: Use a password protected area for web-based help (knowledge base)
Encrypt and convert CHM to exe by using CHM to EXE Converter 2.0 with password protected, prevent from editing, copying and printing. You can only convert chm to exe without password, and you can also set a password with PC-binding to your users. Only you can create open password for your users. Easily distribute CHM files and protect it.
EDIT:
Your first requirement "I want to allow access to the Knowledge-base to an only authorized users" can be solved by a web-based help. You often come across websites where you don't have free access to all the sections: to be able to view the contents in certain parts of the website you need to register and obtain a login and password to enter these restricted areas.
A classic example is a company site, where access to the Members' Area is reserved for salespeople and partners to view help documents and price lists, or portals that require login access to contents that can be downloaded.
If you really want to create a structured application help for a software on Windows, including context-sensitive help, CHM is usually better. But even that has a learning curve.
Your second requirement ".. and authorized users should also not be able to further copy or decompile the knowledge base." can only be solved with a lot of effort. No idea - maybe encrypt/decrypt to memory stream and pass it to file stream.
Samples for Web-based help:
Sandcastle Help - Dummy sample
FAR HTML - Web Help
Python documentation

Related

Alternative for Access+SQL Server for enterprise projects

We're a small software company, developing projects for manufacturing facilities about analysis, traceability, reporting etc. We're using Access for front end, SQL Server for back end. We've quite big customers too and our company is growing. So far it is working fine but I wonder should we move to more influential technologies, such as web based solutions. What do you think about the future of Access?
Well, keep in mind that Access now has a web option. This option works with SharePoint and the new upcoming office 365. Here is a video of an Access application and note how at the half way point I switch to running the application 100% in a web browser. No ActiveX or Silverlight is required. I even tested and run the application on my iPad.
Video here:
http://www.youtube.com/watch?v=AU4mH0jPntI
And Access 2010 also has baked in support for the Azure (cloud) edition of SQL server.
So, we have web based options, cloud based options, and there been significant investments into Access for 2010.
You could have a look at these questions:
MS Access as Enterprise Software?
and
What are the appropriate uses for MS Access?
Here we have a central SQL Server database, with both an MS-Access and a Web client interface. MS-Access is history (we started it 5 years ago) and Web is trendy (less than one year old). I must admit that MS Access is still very very efficient and cheap, once you have resolved some MS access specific problems, to which you might find answers here:
Working with multiple programmers on MS Access
How do you use version control with Access development?
Best way to test a MS Access application?
MS-Access, VBA and error handling
You can always use VB.NET Express. It's free, and Microsoft's licensing should still allow you to sell apps created with it (they did with Express 2005).
UPDATE: Access 2013 has better support for web apps than previous versions, and the apps use SQL Server or SQL Azure under the hood by default. So be sure to thoroughly evaluate the latest version of Access before concluding that you need something else.
A very good alternative to Access with similar features is Lightswitch. Here's a quote from MSDN:
Visual Studio LightSwitch is a development environment designed to simplify and shorten the development of businesses applications and data services. LightSwitch makes it easy to create data-centric business applications that can consume a variety of data sources and create clients that can run on a variety of devices.
While Access now has a web option as #AlbertDKallal mentioned (and which is still worth considering as one option), creating an HTML 5 app is the whole focus of Lightswitch. (Note: the original version of Lightswitch required Silverlight, but the newer versions create HTML5 apps that don't require any plugins.) The app will also be more extensible, since it's a .NET app, and for things that require custom programming you can program in C# or Visual Basic rather than VBA.
I should mention at this point that I haven't actually tried Lightswitch yet (!) - I'm currently evaluating it and these are the features that look attractive to me compared to Access. If anyone reading this in the future is curious about what my experience with it was like, feel free to write a comment to remind me.
For some introductory info, see these links:
Showcase Video
Is Visual Studio LightSwitch the New Access?
(Note that this article is about a the original version of LightSwitch, not the latest version.)
And...for a completely different cloud-based option, check out:
https://www.parasql.com/

AutomationFactory - Information Needed

I am interested in using the AutomationFactory namespace but I cannot find any documentation on what I can use for a sepcific COM. I figure it's because I do not know what terms I should actually be looking up. Does anyone have any resources? In particular I'm looking for information on Excel, Word and Outlook.
Thanks In Advance!
AutomationFactory is a class, not a namespace. It is specific to Silverlight version 4, an execution environment that doesn't support COM Automation by default, only if the app runs out-of-browser as a trusted app. The MSDN Library article is here, the bottom of the page has a link to a How-To page.
You should start with the MSDN topic here: Office Development
I would then be inclined to create an experimental Windows Console application and reference the relevant office COM libraries. Write code to manipulate the office COM objects with the benefit of intellisense, get some sembalence of the what the app really needs to do working.
Write a whole bunch of classes and methods which abstract the manipulations you ultimately want to perform in Silverlight from the actual mechanics of office object operations.
The port the code to Silverlight using the dynamic type, you lose all the intellisense on the COM objects of office but by this stage you've created a bunch of classes which once ported are what your real Silverlight code will use to do office operations.
The COM information is the same as what you would find in VBA so when I do internet searches i just look for information related to that.

Fisheye for Winforms

Does anybody if there is a fisheye (menu/pane) windows forms control like it is often seen in Ajax applications:
example: http://interface.eyecon.ro/demos/fisheye.html
A googled around, but I only found this one at codeprojece:
http://www.codeproject.com/KB/menus/FishEyeMenu.aspx
Have you checked out : DotNetBar BubbleBar. It works and looks pretty similar to FishEye.
Also FYI, if you download and register VB Express Edition 2008 (not sure on any other express edition) you get access to download a copy of the bubblebar as a thank you for registering (there is other stuff too). I do not recall the license on it, but I think it was a single install license.
You should try Flash components . I have seen plenty of them on the internet. This is one fo them: http://www.shinedraw.com/animation-effect/flash-and-silverlight-fish-eye-menu/
Even Adobe Flare could help. You might need Adobe Flex builder to create one.

How to start developing Windows mobile applications

I want to write an application for my Windows 6.1 standard smart phone that intercepts incoming SMS messages and auto responds if they match a specific criteria, but despite installing countless SDk's I am unable to do what I need.
The code I want to use relies on the Microsoft.WindowsMobile.PocketOutlook.dll assembly, but I can't seem to find that assembly. Is it possible to use this assembly on a standard mobile device, or do I have to have a Windows Mobile professional device?
So basically I need help getting set up to create Windows Mobile applications.
I am using SharpDevelop (because I
can't afford Visual Studio).
I need the
Microsoft.WindowsMobile.PocketOutlook
assembly (Since I have already written code that should work, that uses it).
A device emulator would also be nice
so I don't have to test on my phone.
Is what I want to do possible on a Windows 6.1 Standard device (HTC OZone)?
Any help would be appreciated, since I am completely stuck at this point.
Thanks,
I tried to compile my code and I get the following errors, as I suspected I would.
The type or namespace name
'WindowsMobile' does not exist in the
namespace 'Microsoft' (are you
missing an assembly reference?)
I can't find the Microsoft.WindowsMobile.PocketOutlook assembly so of course I'm missing an assembly reference.
Where can I get this assembly, and will this code run on my Windows 6.1 Standard phone if I can find it?
In my opinion it's very difficult for someone new to Windows Mobile development to work without Visual Studio.
In theory you can use SharpDevelop or MonoDevelop, but you wouldn't be able to do any debugging on the emulator or a connected device. Being able to debug by stepping through the code while it's running seems to me an unmissable thing if you're new to Windows Mobile and are not quite sure why something you coded is not working. It requires more effort and time to debug something and in the end you might find it more cost effective to buy a Visual Studio license.
The minimum required is Visual Studio 2005 Standard. You could try to see if you can find somewhere that sells it cheaply (as most developers now use VS2008/2010). If you're a student you could get an academic license or take advantage of Microsoft's DreamSpark program. Or if you're a startup you could look at Microsoft's BizSpark program.
Try starting with sample code that has most of you requirements implemented. The SDK comes with the sample: SMSIM
link text
It demonstrates how to use C# to write a managed code version of a Short Messaging Service (SMS) interception application.
I hope this helps.
Mike

Silverlight - where do you start (for free)?

First I've read loads of posts and sites that recommend going to http://silverlight.net/GetStarted/ to get started but I do not have visual studio and I'm not going to purchase it just to 'maybe' learn some silverlight that I'm not going to be able to use for a little while.
The reason being that I've already installed visual studio and all the other things required during a quiet period of work, then another project came up and by the time I got back to thinking about silverlight the trial period has finished.
I have not done C# or XAML (mainly Java, AS3 & MXML, hence the lack of MS tools) but I'd like to look into silverlight when I'm quiet to create some test projects and to determine where I can use it if anywhere. Is there a toolset that will let me learn and use all that is required without purchasing the software (perhaps it would have a watermark like the flex datacharts used to have, unless you purchased them, maybe an eclipse plugin - although I imagine I'm being a bit optimistic here).
If there isn't such a thing then perhaps MS should look into this, Adobe recently let anyone unemployed/students etc to get flexbuilder for free to increase its uptake. That would be great is MS did something similar.
If you are a student, you can get professional Microsoft tools for free through the Dreamspark program. http://www.dreamspark.com
You can download Blend preview 3 and visual studio 2010 for free and use it. You have the tools and knowledge now ;-)
Check out Bizspark too.
Allegedly, you can now use one of Microsoft's free "Express" development systems to develop Silverlight apps.
http://www.bluerosegames.com/SilverlightBrassTacks/post/You-can-now-write-Silverlight-apps-in-Visual-Web-Developer-Express.aspx
In addition to the free-as-in-free-beer options from MS that other answers mention: if you only want to play around with Silverlight for now, consider trying Moonlight -- it may not yet be ready for production work, but nevertheless usable for learning purposes.
One place you can go is to the express web site on Microsoft.com. You can get free, albeit trimmed back, versions of the current release of Visual Studio and SQL Server there.
You can also get a trial version of Expression Blend 2. Blend is a design oriented tool for creating Silverlight applications.
You can also usually find betas of upcoming releases without much trouble.
Silverlight + Eclipse:
http://www.eclipse4sl.org/download/
And how to workaround Express for SL
http://www.informikon.com/blog/howto-silverlight-and-visual-studio-express.html
Good luck
Braulio

Resources