1

We have rewritten a WinForms app A as a web app. The old WinForms app had integration with WinForms app B, in that you could fire it up from app A with a set of variables.

Users are now demanding the same functionality from a rewritten web app. My first thought was for WinForms app B to create my own URL protocol (foo://...), but it seems that to do that you have to create keys in HKEY_CLASSES_ROOT - which is an activity done by an admin user. However, the users are basically limited users and WinForms app B is actually a ClickOnce app.

What are my options?

AngryHacker
  • 59,598
  • 102
  • 325
  • 594
  • does app b talk to a server that the web app talks to? – Daniel A. White Nov 18 '13 at 19:03
  • 1
    You can create an installer that an admin would install on client machines. After all that's what an admin's job is. – Andrew Savinykh Nov 18 '13 at 19:05
  • When you say "integration", what **exactly** do you mean? How did it "integrate" previously? Was it a command line call? Something else? Also, where do these applications live? Client side? Server side? – Oded Nov 18 '13 at 19:06
  • @HighCore that makes no sense - web applications do not share the same filesystem with desktop applications so memory-mapped files don't make much sense (unless through a network share, I guess?). Please share more details of this approach of yours :) – Dai Nov 18 '13 at 19:09
  • @DanielA.White No, it doesn't. The web app A is in the cloud, while app B is on a local server. – AngryHacker Nov 18 '13 at 19:09
  • It seems that these are client side apps and the integration amounts to a command line call (or perhaps data are passed via environment variables). – Andrew Savinykh Nov 18 '13 at 19:09
  • @Oded The "integration" meant that app A created a file in the temp folder on the fly with a set of parameters (quiet complex) and then command line called app B with the file as the command line parameter. App A now lives in the cloud (Salesforce) and App B is a local app that connects to a local database/web service. – AngryHacker Nov 18 '13 at 19:11
  • @HighCore Could you expand on a concept of a memory mapped file? I know how client apps talk via MMF. How does a web app create that? I've never heard of it. – AngryHacker Nov 18 '13 at 19:12
  • Memory mapped files will not help in this case. The problem is that App A is now sandboxed in the browser - it cannot do any of these on the client machine: 1. Create files, 2. Call items on the command line, 3. Use memory mapped files. – Oded Nov 18 '13 at 19:14
  • @All - this is just to add to the discussion, it's ultimately bad form but could be a workaround. Can you create dynamic links on the web app based on user? You'd need to capture their local workstation name and create a link like **Run Cmd**. Replace this exe with App B. There are a ton of assumptions here, like Users have LA on their PC, web app A allows links like this, you're allowed to run apps, etc. – Stinky Towel Nov 18 '13 at 19:24

1 Answers1

2

Since App A is now in the cloud and the user interacts with it via the browser, it is sandboxed and many of the things that a desktop app can do are not available to it anymore.

This is a security feature and outside of writing a browser plugin that will bridge between App a on the browser and App b, there isn't much you can do.

Oded
  • 489,969
  • 99
  • 883
  • 1,009