Windows 8 protocol activation of Desktop app from a Modern App - winapi

I have two versions of my custom software. The Modern/Metro app (AppM) and my legacy Desktop application (AppD). I have created a custom protocol for AppM using the manifest that is well understood. I've edited the registry to make a custom protocol handler for AppD and have tested that I can indeed launch AppD using protocol activation from the Run dialog (WIN+R) by supplying the protocol and hitting enter, "AppD://" in this case. I'd like to be able to launch AppM from AppD and AppD from AppM. I've added handlers for each. In AppD I'm using Process.Start(uri) and in AppM I'm using Launcher.LaunchUriAsync(uri). I can get AppM to launch from AppD but I never get AppD to launch from AppM. I've googled and can't find any references to this. I'm assuming it's not possible and might very much have to do with permissions. As this assignment has fallen to me on the project, I need to either prove that it's not possible or find a solution.
I've tested this out using C#/XAml as well as HTML/JS and it's interesting to find that Launcher.LaunchUriAsync(uri).when() success function is called, but the success flag is false. there is no error (or at least the err function is never hit). I'd like to get a better error message and I'm currently trying to dig down that way.
So help with the actual issue, or help with how to debug this would both be greatly appreciated.
Update: To eliminate my own code, I downloaded and installed the launch by association example and simply changed the var uriToLaunch= "http://bing.com" to var uriToLaunch= "AppD:" and it fails every time. This protocol is associated in the registry and the method that I'm using to verify this is by running it using WIN+R from the desktop and the app launches just fine.

BatRT is an application which allows you to run a batch file from a metro app, utilizing URI calls. This should solve your problem.
Simply create a batch file within your metro app, then utilize BatRT to execute the batch file. Code snippets are available at the link above.

Related

UIPath Automation: Is it possible to perform click and UI interactions in cloud server in UI Path?

So I have created an xaml flow which clicks browser buttons downloads files and then does some basic operations. I setup a windows server and connected remotely to it and when I debug my process automation while staying on the screen it works smoothly, problem is that I can't keep my pc on forever so when I just minimize the file even though my system remains up and running:
The UI Path process kills as the button press times out. I was just curious to know if it's compulsory to keep screen up for the ui based process automation to run through or is there a way to initiate the process and then close the screen and let the system do its job?
This is the eror I get which is like first UI interaction:
Here are the steps I have performed:
Created an unattended robot with machine as the remote instance name.
Created an environment and connected with the robot created in step 1.
Setup UIPath Assistant using machine key and URL.
Published the files and then created the process in cloud console.
Ran it from cloud console.
The process faults at its first UI interaction. Even though it was running in unattended robot form.
Thanks in advance.
AFAIK this is intended by the licensing model of UiPath. So to solve the issue you need a license for the VM of your RDP connection that allows the unattended usage.
Another idea could be to start the process in the PIP (picture-in-picture) mode. But I have never tested that, so this might also not work.
But maybe you already have a license like that and could test that out.
These are our types:
Solution for UiPath Studio 20.4 or higher
For my Use Case Picture in Picture mode worked correctly. Thanks #kwoxer for the suggestions, though his answer was enough but I am adding it up here for those who may need future reference.
So If you're facing issues with automating user interactions in dynamic JavaScript Website over a cloud server that loads on demand (When you minimize or close your remote session, the process times out as it's not able to find the UI component), here are the simple steps to follow:
Goto Debug options on top and select picture in picture as shown below:
This basically lets the bot start the system from another node. Now when you run the system and even close the remote connection, the automation process including all sorts of UI interaction will work like charm. Please let me know in case someone faces the issues with the same. Would love to help!

Manually update an windows app in kiosk mode doesn´t work

Manually triggering update of an app when running windows in assigned access (Kiosk mode) doesn´t work.
I have read others facing the same issue and it feels like there is a bug in windows Kiosk mode. But maybe there is some reason for this behaviour?
I have an app that I sideload using an appinstaller file (my app consist of both a uwp part and a consol part linked with a bridge connection). The app works well in Kiosk mode besides the update part. If I enable automatic updates and link to a specific folder on my computer the automatic updates will work and update my app from the specific folder. However this way to update requires two restarts before it is automatically updated. I want to be able to manually trigger the update from within the app itself somehow and have it updated instantly.
I have tried to update using packagemanager using the function below. This works well in desktop but will always freeze in bluscreen with progressring if I run it in an account in Kiosk mode (assigned access).
PackageManager pm = new PackageManager();
pm.AddPackageByAppInstallerFileAsync(new Uri("C:\\myLocalPath"), AddPackageByAppInstallerOptions.ForceTargetAppShutdown, pm.FindPackageVolume("C:\\"));
I have also tried to restart the app using the command below in order to trigger the automatic update without the need to restart the entire computer. This also works well in desktop but will freeze in bluscreen if I am in a Kiosk account.
AppRestartFailureReason result = await CoreApplication.RequestRestartAsync("Restart");
Restarting the entire computer two times and enabling automatic updates will update the app without problems. Why is it not possible to use one of the methods above? Is this a bug in windows kiosk mode or is this really intended??
The same issue is also reported here:
problem-when-restart-app-on-kiosk-mode-windows-10
and here:
intune-kiosk-blue-screen-spinner-after-uwp-app-res
See my answer to how I made this work here:
The same problem described on microsoft docs
I don´t feel very confident with the whole assigned access and package installation concept. It works at the moment for me but my feeling is that it is not very stable. Many different ways of creating almost the same thing. The problem is that there are differences between the results depending on how you get there. For instance two assigne access accounts don´t behave the same if you created them differently. Also adding and removing both apps and accounts leaves trash that you don´t see but can cause problems.At least this is my feeling.

Use winexe to open windowed application remotely

I have to open an application like broffice on WINDOWS that is on AWS EC2 and write a text on it. This application is obviously windowed and I have to execute it from a Linux Server.
I'm trying to use winexe, but I think that it does not open windowed apps.
Is it possible to show windowed applications and performs clicks and writes tests on it remotely?
Please, do not worry about what I want to do after show window. I need run windowed applications remotely and show the window.
You could use winexe to call another tool that can handle the UI automation for you. It looks like Autoit may be able to do what you need via creating a script and compiling aut2exe. https://www.autoitscript.com/site/autoit/
I fix our problem creating a secure REST WS that receive a key and execute the command internally. It works in a queue of remote commands and return us the answer code. With this code we validate if our command was correctly executed or not. Other solutions found: use servlet, soap or queues, or virtualmanager. All those solutions was discarded because, or was very complicated for our problem or we don't have permission to execute, or will generate security problems.

Installation metro style application

I am trying to install my Metro Application.
So, my question is:
Can I move sample pictures for my Application to KnownFolders.Pictures and Videos during installation ?
And, how can I create installation file for my application?
Thank you
With the installation mechanism for Windows Store apps in Windows 8, there is no need to write a setup or installation program. That will all be managed through the Windows Store once your app is published.
Since you can't write a setup program, to accomplish a similar goal, you can put some functionality in the app to execute when it's first run, then save a setting to indicate you've already performed the first run operations.
This would be where you would put your code for moving sample pictures.
However, your app will also need the appropriate permissions to access the KnownFolders location programmatically - check out this article for details. http://msdn.microsoft.com/en-us/library/windows/apps/Hh967755.aspx
It's also a good best practice to ask the user if it's OK to copy sample pictures to their Pictures library.

Running activex dll fromVB6 under windows 7

I'm adding some functionality to an old admin tool written in VB6. The tool uses a c++ activeX object. I haven't worked on the tool since I upgraded to windows 7 and now the active X object fails to load with the 429 "ActiveX component can't create object" error. I'm not knowledgeable about VB6 but I have registered the activex dll and type library and I can remove and add the object from the project via the project->references window (the program fails to compile when the reference is removed as expected). The VB6 ide is running in administrator mode and I get the same error if I run the exe directly as an administrator.
Has anyone else experienced a similar problem and found a way to sort it out?
Thanks,
Patrick
PS : I have also tried putting the dll in question in the working directory of the exe
EDIT: I've had no luck trying to sort this out and ended up remoting into a windows 2003 server to test the changes.
You might try using Mark Russinovich's regMon and FileMon to see exactly what files or regkeys are being requested during the load of that dll. That can often tell you if you've got a missing dependency.
Also the DEPENDS.EXE that comes with VS6 is sometimes good for that (though it doesn't necessarily get ALL the dependencies of a dll or exe).
COM is going to use the registry to map from the class name to the physical DLL file that has to be loaded.
Check the registry keys pertaining to your COM object... first under HKEY_CLASSES_ROOT, then the class name, which gets you the CLSID, then the HKEY_CLASSES_ROOT/CLSID section for the GUID of the object, and then see where the physical library lives.
A 429 could mean all sorts of different things. Many times, it means that there's a dependency missing, and the easiest way to figure out what dependency is missing is to use procmon to see what files/registry settings the app is trying to access and hopefully, catch where you get ACCESS_DENIED or FILE_NOT_FOUND or what have you.
The problem might also be with your browser. A couple weeks ago I upgraded my IE, since then I've had to make changes by opening IE, click tools, click custom, scroll to the activeX controls and enable, and/or click prompt. The same was needed for scripting and for me to use XMLHttprequest. Now everything is back to working, however the ActiveX warning alert sometimes takes over 2 minutes to pop-up, then when clicked everything works fine.
Do you have UAC enabled on that machine? Have you tried disabling it? I have seen some cases where it let ActiveX controls being registered but didn't let applications using them ran.

Resources