I have windows application in c#.that is installed for client . I need run that window application from client side when user button click in asp.net web application
Explanation
I have task that scan hard copy from scanner . I developed web application in asp.net c#. I have search in Google to do this so many peoples are saying that is not possible due to permissions. so I developed windows application when I run that window application(c#) it scan the hard copy from scanner this window application run in background so I need to run this window application. when user button click in asp.net web application
You cannot run applications from a website on client's machine due to security & permissions.
However, your website probably can communicate with the scanner. Check this detailed answer.
While you cannot run the application from the browser, there is another option, if your application is already running in the background. Then you can make it listen to some local port and then ask the browser to redirect to the URL (consisting of localhost and that port, e.g. http://localhost:34554), so the application would receive an HTTP request and will know it needs to become active / show its window / etc. Using this technique, you could even pass some parameters to your application using query params in the URL.
Another option that allows you kinda run an application from the browser is Microsoft ClickOnce - it is just a simplified way of installing and running an application without the need for the user to download and manually run the installer.
I need to launch an application which is installed in the client machine when the user clicks the link in the client webpage from browser. for instance like launching the Goto meeting application from the client machine when clicking the URL link if installed else providing the download link.
I tried with ActiveXobject approach which works only with IE browser.And also check with FileAPI.
In the following link they mentioned about using Asynchronous Pluggable Protocol Handler. Since I'm new to it. Can you please guide me where to start.
Launch application from a browser
About the environment. My server application is in Asp.Net MVC platform.
Thanks in advance
Since the browser prohibits you from executing anything locally I think the best way to solve your problem would be to create Chrome/Firefox extensions.
Extensions are not bound and can be executed locally.
My requirement is to launch my installed application from chrome browser if it is installed on client machine, If not installed then I wanted to start download. What is best recommended solution for chrome?
So fare i tried following
used NPAPI, but due to deprecation of NPAPI by chrome I can't use.
Checked PNacl and Pepper API both API not providing access to local file system to launch an application. They just port my C/C++ code in browser and run it in browser environment with sandbox restrictions.
Is it true only option i have is to use native messaging? Or is there any other option for simple task to launch my application from our url,
Regarding “Native Messaging”
Do users need to install my extension
Do i need to add my extension to chrome store
How to deal with Registry permissions for non admin users
Can i install extension to chrome along with my app installation
Note :- Found some providers use “External Protocol Request” to launch application but there are no enough resources where can i found more about this
Thanks and Regards,
Pravin
For what its worth,
see here - http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/nativeMessaging/
the README indicates that Native Messaging can now be added even by non-Admins.
But it appears Native Messaging will only work for Extensions: "Extensions can exchange messages with native applications(...)" and I dont imagine you can expect all of your users to do that.
To open it if it's installed you just need to register your application (at the OS level, so the details will vary by OS; you don't say what OS you are targeting) as a handler for some specific scheme, then have your page open that scheme. That's the same flow that causes mailto: links to open a user's mail client, for instance.
If you have a chrome app, you can use inline install: https://developer.chrome.com/webstore/inline_installation
Our website is an AJAX website that makes no page requests after the initial start up of our website. Information is communicated with the server through XMLHttpRequests.
Our website allows users to work online and offline without a connection during a user session. When a connection is detected our website "synchronizes" with the server.
Our problem is that if the internet browser running our website crashes while the user has no internet connection the user cant begin working with our website until she/he gets an internet connection back.
Is it possible to have the browser cache the initial startup page (index.html) along with the other website resources and have the browser use the cached version of the startup page when there is no internet connection present?
(Google)Gears is exactly about this.
Today: use a service worker.
The 2009 answer: Not with any technology built into common web browsers.
You can achieve this using (the defunct in 2020) Google Gears, but that requires the user to install a plugin and grant permission to your website to use it. Google Docs and Wordpress are examples of web applications that use this.
This really isn't feasible. You could look at Smart client technology if you truly need to work offline. That'll be a lot of work though depending on the size of your application.
Technically it is possible. Google Gears does it. So Google can now save your entire gmail app on your local machine and operate without an internet connection.
You can use HTML5 databases, check the iPhone version of gmail for offline functionality without a plugin.
Let's say I've got a website that works better if a client has installed and logged into a desktop application. I'd like to be able to do 2 things:
Alter the website if they haven't installed the app (to make it easy for them to find a link to the installer)
If they've installed the app on a couple of machines, determine which machine they are browsing from
I'd like something that works on Windows and OSX, on any of the major browsers. Linux is a bonus.
A few thoughts:
Websites can detect if you've got Flash installed. How does that work and could it be used for both of my goals?
Could I just let the client serve HTTP on localhost and do some javascript requests to fetch a local ID? I know google desktop search did something like this at one point. Is this a standard practice?
Thanks!
You can register a protocol from your desktop application (see this). This can be used, for example, to open your desktop application with arbitrary data from the website. You could then have your desktop app send a HTTP request to your webserver, telling it what machine you are on.
You can have a browser plugin (activex for IE or Netscape plugin for the rest of the browsers) that can communicate with the application. When the webpage is loaded, it can try to instantiate the plugin and if it succeeded, it can use it as a proxy to the application. If it fails, then either the app is not installed or the plugin was explictly disabled by the user. Either way, your website should degrade its functionality accordingly.
Update: Forgot to answer your questions:
Flash does it exactly this way. Flash is a browser plugin that is created by the web pages.
You can have a machine ID generated at the application/plugin install time and your plugin can pass that machine ID to the webpage when it is created.
On the topic of using local webserver:
I would stay away from having a local webserver, mainly because of security considerations. It takes quite a lot of work to make sure your local webserver is locked down sufficiently and there are no XSS vulnerabilities that other malicious websites can exploit to make it do stuff on their behalf.
Plus, having a webserver means that either it has to run as a system-wide process, or if it runs as the user, you can have the website interact with only one user's instance of the application, even though multiple users can be logged on and running it at the same time.
Google Desktop Search suffered from both the XSS security vulnerability (though they fixed it) and the limitation of only one user being able to use it on a machine (I don't know if they fixed this one yet, though chances are they did).
Websites can detect if you've got Flash installed.
Actually, I believe a browser can detect if you have the Flash plugin for the browser installed, and webpages can offer "installed" and "uninstalled" option that the browser can choose.
Otherwise, you are asking for a means, by putting some code in a webpage, of being able to analyze a user's home computer, and report what it learned to you website.
Can you say Major Security Hole?
If you can pick a development environment for the desktop app, then check out AIR from Adobe. It lets you develop desktop applications using either html/javascript, Flash, or Flex.
It has API calls you can use from a browser based flash app to see if the desktop based AIR app is installed, what version, etc. You can even launch it and pass parameters from the web app to the desktop app.
http://www.rogue-development.com/blog2/2008/03/interacting-with-an-air-app-from-a-browser-based-app/
Websites can detect if you've got Flash installed. How does that work and could it be used for both of my goals?
it's quite a bit simple, your browser tries to render some additional files, with some specific formats such as flash .swf and I the browser doesn't find installation, then will be start downloading, or you will get the option to download that program.
Flash also uses AC_RunActiveContent.js please take a look at this js, people usually put this on their webpages
if (AC_FL_RunContent == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave cabs/flash swflash.cab#version=8,0,0,0','width','981','height','635','id','build5','align','middle','src','build5','quality','high','bgcolor','#ffffff','name','build5','allowscriptaccess','sameDomain','allowfullscreen','false','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','build5' ); //end AC code
}