Bidirectional communication between VSTO add-in and Web add-in - vsto

I need to know the way that can communicate between VSTO add-in and Web add-in when the add-ins are running inside desktop Office or Outlook application.
I am developing Office online add-in for desktop version, and because there are so many restrictions, I want to solve the problem through bidirectional communication between VSTO add-in and Web add-in if it is possible.
I am not considering about deployment.

This isn't a supported scenario. A Web Add-in runs within a sandbox and completely isolated from the host it's embedded in.
The only possible workaround would be using a common back end and to handle routing commands and events between your Web and VSTO Add-ins yourself. This is effectively how Office.js works as well. It is however an extremely non-trivial endeavor.
I would strongly recommend visiting the UserVoice and posting your blockers as suggestions. It is extremely valuable to for Office teams to see exactly which gaps developers are being blocked by in the wild.

Related

Is it possible to automate Outlook using Selenium?

I am trying to create a Python script that logs in to my Outlook account, opens the unread messages, and if it has attachments it downloads them.
However, after login, it seems that I am stuck and cannot do anything.
Are these activities out of the scope of Selenium?
Where do you run your python scripts?
You may find REST API helpful. But if you are talking about the desktop edition here is what MS states:
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.
If you are building a solution that runs in a server-side context, you should try to use components that have been made safe for unattended execution. Or, you should try to find alternatives that allow at least part of the code to run client-side. If you use an Office application from a server-side solution, the application will lack many of the necessary capabilities to run successfully. Additionally, you will be taking risks with the stability of your overall solution. Read more about that in the Considerations for server-side Automation of Office article.
If you deal only with Exchange profiles consider using EWS instead. See EWS Managed API, EWS, and web services in Exchange for more information.
If you are talking about outlook.com then yes, it's possible. I guess it's gonna require a lot of xpath though...

Outlook macros processing before login in system

I have to process macros in Outlook. As I login to system; Outlook launches and the processing starts, but I need to do the processing irrespective of login to system. i.e when I switch on my PC before login the Outlook should process the macros.
I tried to put Outlook in startup, regedit, scheduled the task to run but didn't get success result.
Thanks in advance..
If there is no users logged to the system, what profile should be opened in Outlook?
i need to do the processing irrespective of login to system
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.
If you are building a solution that runs in a server-side context, you should try to use components that have been made safe for unattended execution. Or, you should try to find alternatives that allow at least part of the code to run client-side. If you use an Office application from a server-side solution, the application will lack many of the necessary capabilities to run successfully. Additionally, you will be taking risks with the stability of your overall solution.
Read more about that in the Considerations for server-side Automation of Office article.

How to debug Office add-in running in Citrix environment?

I have a VSTO-based PowerPoint add-in that runs fine on Office 2007 and Office 2010. I have users running this add-in every day, day-in, day-out.
I'm now working with a new client that uses Citrix for their desktops. I've never really understood exactly how Citrix works, but it appears that no-one has locally-installed software - they just run everything off the Citrix box. It's a very locked-down environment. They use Office 2010 and what appears to be Vista.
Anyway, my add-in is exhibiting strange behavior in this environment. Simply clicking one of my buttons on the ribbon sometimes gives an error (if the "Show addin user interface errors" setting is ON). The error says "An error occurred when calling the callback "ButtonClick".
Other times, clicking the button appears to have no effect at all (although I suspect that it's actually starting to do something and then crapping out before displaying any messages).
I'm confused, because (a) it works elsewhere, and (b) I catch and report exceptions in all my button-click handlers, so I would expect to see an error reported.
Because the environment is so locked down, and it takes literally weeks to get a new version of my add-in rolled out, I don't know how to diagnose this.
Any ideas?
Have you ever used RDP to remote into another Windows machine? To all intents you can consider Citrix to be a much fancier version of RDP. So you have a bunch of servers where users run their apps and desktops, and they connect remotely to them using HDX instead of RDP.
Your customer could be using XenApp or XenDesktop. In XenApp the users run their sessions on Windows 2008 R2 servers, with multiple users sharing each server. XenDesktop is similar except instead of connecting to a server OS, the user connects to their own dedicated workstation image. At a guess your customer is probably using XenDesktop since you say they are running on "Vista".
Diagnosing your problem is going to be tricky without access to a Citrix environment. For my debugging I'll generally install the remote debugging agent on the Citrix machine and debug remotely from my workstation. Occasionally I'll use Windbg or Visual Studio installed directly on the Citrix machine. If your customer is willing to give you access to their environment you can try this.
Other options include:
Add diagnostic tracing to your product.
Citrix provides some compatibility testing services, see: http://citrix.com/partner-programs/citrix-ready/test.html
As to what might actually be going wrong, Citrix does a range of hooking that can cause unexpected behaviour. For XenApp in particular the multi-monitor hooking is the main cause of things going wrong (I am not sure if this applies to XenDesktop as well). If you do a Google search on "citrix disable hooks" you will find a range of links that describe how to disable hooks using the registry. Disabling the hooks in this way certainly works for XenApp. I am not so familiar with XenDesktop, so I don't know if the same techniques apply. I'd certainly recommend trying disabling hooking for PowerPoint to see if your issues go away.

Can we automate Application available under Citrix Program Neighbourhood?

I tried to automate an application available under Citrixl Program Neightbourhood using QTP 9.5, but QTP does not identify the objects inside the application. Can we automate citrix application using QTP?
What are different tools available to perform automation testing on Citrix applications?
I have used Scapa Technologies for Citrix ICA or Terminal Services testing. Scapa provides an automation tool that is installed on the Citrix server. Then it has a controller that launches the citrix session, communicates with the server and starts the automation tool which calls your automation script. It actually runs on the server so it can interact with the applications controls.
QTP supports Citrix only if it is installed on the Citrix machine, it doesn't support working via the client.
For technical reasons this is because QTP needs to be able to listen to windows messages and load its DLL's into some applications which it cannot do from a different machine.
Traditional tools generally do not work with applications running in remote desktop applications. The interfaces needed aren't available. Probably your only option is an image-based tool like Eggplant.
The difficulty with Citrix automation is that the applications are streamlined to the client computer as an image, thus you can not access to the UI tree of elements.
UiPath can automate very easy Citrix applications (also desktop or web) by using some image automation specific techniques like
clicking relative to an image
using OCR for text scraping
using keyboard hotkeys
click relative to a OCRed text
Here's a full tutorial showing different Citrix (or virtual desktops) automation techniques for
data entry
OCR data scraping
clicking and typing relative to an image or text
UiPath has an SDK that can be used from code.
The default will be to create visual automation (workflows) directly from UiPath Studio.
Note: I work at UiPath. You should also try other visual automation tools like Automation Anywhere, WinAutomation, QTP, Selenium, etc, use them side by side and choose the one that suits better your needs.
For what it's worth, I have automated a CITRIX application just as you described for a large telecommunications firm in the early 2000s. I did this by getting deep inside the Windows SendMessage APIs and an optical character recognition package. You would probably be astonished by how much data was moved from one system into another using my team's CITRIX/screen-scraping "robots." I came upon this question because I was reminiscing about this project and wondering if there was still a need for this type of solution in this day and age.
As Motti said You can't automate via Citrix client. In general Citrix client is hard to automate. I know that someone at my work played with it and he managed to catch some communication and objects that could be useful to automate tests via Citrix, but that would be separate development project to create such solution that could be very limited.
Via citrix QTP object recognition is totaaly different. QTP on remote machines works on objects based on location and reference so it is almost impossible to automate.
As per my experience this type of setup can be best handled using the Image recognition and/or OCR capable testing tools like eggplant but its not really suggested to have testing environment which includes Citrix. Another option could be to install an automation tool like AutoIT within the Citrix machine and trigger the scripts using the other tool (maybe Selenium but I am yet to try that out).

Desktop Based Application

What is a better platform/language for developing Windows/desktop based application that can run offline (sometimes)? .NET (C#, ASP) or Java or any other development tool? This application requires to store data into a database(involves some GIS) and later Synch both ways with the main server (SQL/Oracle) during off hours or when initiated by a user or event or when online? ALso the tool/IDE recommended should allow us in the future to migrate this desktop application as a Web based application to the corporate server with less pain or re-work when internet/nw access is available to all of our remote sites/users. Any input/advice is appreciated.
If you are strictly doing Windows desktop application development, C# or VB.NET would be an excellent choice. There is a ton of documentation out there for .NET developers. Although the framework is a free download from Microsoft, any serious work is cumbersome and tedious without the IDE.
If you needed the potential to support your application on multiple operating systems besides Microsoft Windows, then I think it might be worth looking into Java.
For web solutions, in .NET you have ASP.NET, Java you have JSP and Tomcat.
You could try Adobe AIR. It seems like it would serve most of your desktop needs and it should be the easiest to migrate into a web app (Flex).
C#/WPF for desktop with Silverlight, XBAP or even ASP as the online options.
Since you mentioned the desire to web-enable this application at some point I'd look into Silverlight. Out-of-browser capabilities were introduced in Silverlight 3. That means that the app can run directly on the desktop, and the internet connection is optional. However, when the internet connection is available it has built-in support for auto-updating itself.
And now in Silverlight 4 it's possible to run an out-of-browser Silverlight app with elevated trust. Silverlight 4 also finally introduced things like right-click support, clipboard access, full keyboard support in fullscreen mode, etc. So if you're just now starting development, I'd most definitely use version 4.
You'll have to communicate with something like a WCF service for a lot of the database operations. But going with Silverlight should allow you to build something that'll work on the desktop and the web alike without having to manage two systems.
Going web-based after you already developed a desktop application is a really bad idea. There is no reason the desktop application cannot use a internet connection, and be updated from a server.
You could try Delphi. It's a rapid application development tool. Very different, but very quick to use. Well suited to Oracle integration. Data sync is probably going to need to be custom, unless you're using something like Sybase SQL Anywhere.