Using Microsoft's Visual UI Automation Verify - c#

I'm doing my first steps in automated QA, doing a UI automation for a WPF app.
After a long research I figured the best tool for the task is TestStack.White.
I'm stuck at the stage of identifying the type of ui element on which I want to perform. Some were easy to find and some weren't.
I've read about a tool by MS, Visual UIA Verify, which should be a part of Windows SDK.
I have SDK installed, but I don't have VUIAV.
So my questions are:
Is UIA verify indeed the right tool for the job?
How should I use it? I tried downloading from this link, but still couldn't get it to work.
I did a lot of googling before posting, with no real answer.
I'm working with VS 2015, on a machine running Win7 pro 64bit, if it matters.
Thanks,
Tal

I recomend using Inspect.exe (also part of Windows SDK) instead of VUIAV, it is faster and has more options, like using ms accesibility not only automation (ss attached)
the path in my installation is C:\Program Files (x86)\Windows Kits\8.1\bin\x64\inspect.exe

1) Yes UIA verify is ok for this.
UIA Verify 1.0 and UISpy use the original managed API.
UIA Verify 2.0 uses the newer native COM UIA library that was released in the UIA 3.0 update alongside Windows 7.

As was said above it comes together with Windows SDK. And personally for me the path to it is:
C:\Program Files (x86)\Windows Kits\10\bin\x64\UIAVerify\VisualUIAVerifyNative.exe
Also I can find it here:
C:\Program Files (x86)\Windows Kits\10\bin\x64\inspect.exe
But it's a little bit different tool.
Compare inspect.exe:
With VisualUIAVerifyNative.exe:

Related

What is the easiest way to create setup for MS WORD addin? How care about versions compability?

I'm developing addin compatible with 2003,2007,2010 and 2013 MS Word versions and XP(not crittical), Vista, Windows 7.
Important note - I'm working with free SharpDevelop IDE, target framework is 4.0.
First of all, I should find installer for relevant version of intertop assemblies and provide it to client. In order to download only one version I have to download the oldest version of PIA. Here I read that PIA for XP works for any MS word version and for any of XP,Vista and Windows 7. Is it true?
This answer talks about implemeting Extensibility interface. I found extensibility GAC reference in SharpDevelop and it's ok. But should I give extensibility.dll to client or it exist on any PC with .NET framework?
What version of Microsoft Object Library is compatible with every OS/Word combination? 2003's 11.0? Is it necessary? Now I'm using office.dll GAC reference without adding object library and it works. But I can't even build project using both office.dll and object library. Doest it mean I can provide to client office.dll and forgot about object library and problems related to compability?
Question about RegAsm.exe. If I compiled project under 4.0 .NET Framework and set target Framework 3.5 what version of RegAsm I should use? Development version or target version?
Oh, i forgot the main question)) After solving compability problems how create setup.exe which automatically installs .NET Framework, Intertop Assemblies and automatically registers addin? Right now I'm doing registration manually - create LoadBehavior,Description,FriendlyName variables in regisrty, call RegAsm - how do it inside installer?
I owe you respect for the work you have undertaken to do all this manually and without the help of Visual Studio. I'm developing also add-ins targeting multiple office versions, but I always use Visual Studio Professional together with the Add-in Express rapid development tool, which covers all of the questions / steps you're asking for. You may get plenty of free information on their website.
Please be aware that creating an installer program working in all the situations you have named can be a very difficult job. Don't forget that in the case of a professional software you must test your deployment on nearly each configuration you're expecting.
ad 1) As for an installer, look for WIX tools which are free. Otherwise you can buy any installer program you like and learn how to deploy. - As for the PIAs, installation can only be done be administrators, so be aware of this.
ad 2) You must deploy the extensibility.dll to your clients.
ad 3) You must use the oldest PIA for all versions, because it is the only one the oldest office version (e.g. Office 2003) can understand. All Office PIAs are compatible upwards. Attention of course you cannot use methods or properties which have been introduced in newer versions.
ad 4) I don't think that there's a difference between the two versions of regasm.exe.
ad Main Question)
I cannot explain here HOW TO DEPLOY AN OFFICE ADD-IN. You need some basic knowledge about the Windows Installer technology first. But you're on the right way.
However, "Installation of the .net framework" I would leave as a prerequisite to the administrator, because it may require reboots.
Additionally, a lot of people have got grey hair pulling the right version of the .net framework in their setup program (say, it is running on a Windows 7 English US with Multilanguage Pack in Dutch running a Dutch Microsoft Office 2010: which framework your setup should install?)
The same for the PIAs: You can just check through custom actions in the installer for the existence of the Office PIAs and cancel the install, if they are not available.
As for the registry keys, normally this is done exactly as you're said: writing to the registry during the setup; and this is done normally by custom actions.

Cannot install emonic c# plugin to Eclipse 3.7.2

I wanted to use the c# inside the Eclipse, but I get that error while trying to install. How to solve that problem.
Below: version of my Eclipse, source(put in the plugin manager) information after calculating dependencies.
Version: 3.7.2
Build id: M20120208-0800
http://emonic.sourceforge.net/updatesite/internap/site.xml
Cannot complete the install because some dependencies are not satisfiable
org.emonic.debugger_feature.feature.group [0.0.2] cannot be installed in this environment because its filter is not applicable.
I'm not an expert, but it appears that the org.emonicdebugger feature is exclusive to Linux:
I was having the same problem. After I unchecked that feature from the download, the installation completed successfully.
I tried to download it four or five times and now I downloaded emonic successful with this link:
http://emonic.sourceforge.net/updatesite/nchc/site.xml (Tainan, Taiwan - Asia).
You have to uncheck the org.emonicdebugger!
I use Eclipse IDE for C/C++ Developers (Version: Mars Release (4.5.0)).
My operating system is Windows 7.

Installer for C# App

I'm developing an open source C# application. For awhile now, I've been using a basic .NET installer I coded myself. However, with a recent change, that is no longer practical for me, as I'd have to add a large number of files to the installer - and they may change with each release. A ZIP file is also not practical.
I've done some checking online, I see a lot of MSI, ClickOnce, Self-extracting ZIPs, and (imo the most promising) the NSIS system. None of them seem to exactly fit my needs, so I'm looking for advice on which system to use.
Actual installing of my program is very simple. Basically, I just need to copy the bin\Release directory (and all subdirs) to the client's computer. I've been achieving this somewhat ad-hoc, by embedding every file in my .NET installer, and maintaining a file table of what goes where.
Unfortunately, I just localized my app. I now have 30+ .resx files (Which are compiled to dlls and placed into MORE subdirectories by Visual Studio) and, obviously, it's impractical to add 30+ folders and DLLs to my installer. Hence why I'm on this search.
There's also a few other requirements:
The installer should search predefined directories for a specified .exe. (My app is designed to be a drop in replacement) If the .exe is not found, it should prompt for its location
The installer should verify that "OldApp.exe.bak" exists. If not, it should rename "OldApp.exe" to "OldApp.exe.bak"
The installer should update files. Ie, if "Culture.de.dll" hasn't changed, the installer will leave it alone.
The installer should work with all Windows versions of all .NET IDEs (VS, SharpDevelop, Mono, ect) but does not need to work on other platforms.
When I build the solution, the installer should be automatically regenerated. In other words, it should be run-able for by "Post-build" section.
The installer generation must be able to be added to a source code repo. This is so that anyone who downloads the source of my app can compile the installer as well.
Sorry for the long post, I figured it was better to post more than less.
I'd recommend SharpSetup. It combines WiX and C# for a pretty flexible implementation. Not much I've found it can't accomplish.
We use WIX extensively: http://wix.codeplex.com/
You may have to customize your installers with some exit routines to do things out of the ordinary, but there are hooks in Windows Installer framework that let you do that.
You can put these definition files (XML) in your source control, and you can configure a build to execute the installation. However, anyone that gets your source would need to have the WIX utilities installed.
I would recommend NSIS. From my experience any installer feature that I have required has been covered in NSIS documentation or community examples. I can't comment on NSIS integration with Visual Studio as I use NSIS integrated with my Jenkins build server. There appears to be a free Visual Studio Add-In called Visual & Installer which provides NSIS integration with Visual Studio. I have not personally used it but it appears to be currently actively developed so might be worth checking out.
WIX is a good one. According to Wikipedia, it is used by Microsoft to produce installers for some of their own products.

How can I make an installer that silently downloads and installs prerequisites?

I have to make a rather complex installer for a C# add-in for Word. I've been researching this for almost two days now and I still haven't found something that can do everything needed.
The main issue here is due to the constraints regarding prerequisites. They mustn't be included in the main installer to keep it small so they'll have to be downloaded.
Additionally, they have to be installed silently without bothering the user. It is ok to show a progress bar or something similar but nothing that requires user input.
After reading about the Windows Installer, Inno, bootstrapper packages and dotNetInstaller I have finally reached the conclusion that the later would be best suited for this scope. However, there's a nasty downside which I have yet to resolve: prerequisites checking.
Is there a standard way to check whether a Microsoft redistributable is installed? The add-in needs the following components:
Windows Installer 3.1
.Net Framework 3.5
PIA
VSTO
Furthermore, I haven't been able to find the direct URLs for these components. I'm wondering how Windows Setups in VS get them.
As a last resort I could host them somewhere to have them at a known location but I'd like to avoid that.
Furthermore, I haven't been able to find the direct URLs for these
components. I'm wondering how Windows Setups in VS get them.
If your using the Visual Studio Setup Project, you can embed them into the setup, and make them required for your application to be installed.
At least for the case of Windows Installer 3.1 and .NET Framework 3.5 SP1
Is there a standard way to check whether a Microsoft redistributable
is installed?
Checking the registry is a quick way.
I would first prompt the user about the downloads first because there would be an uproar if it secretly downloaded files without the users consent. It could also be used for malicious reasons if it were unsecure.
use this tool http://www.advancedinstaller.com/ for creating installer project it has the simple ui interface using which u can handel many comple scenarios in an easy way. U can purchase the tool or can use freeware edition

Can anyone provide a good "idiot's guide" to creating an installer in VS2008 (C#) Pro?

I have Visual C# 2008 Professional and have developed the first half of a C# application (console mode) with the second half in progress now (GUI).
I'm looking for an easy path to creating an installer for it. What are the steps that need to be taken to produce a professional installer?
There's a similar question here regarding the Express edition but I have Pro, and I would like as much as possible to stick with just the standard VS stuff (if you think you can convince me that a third party installer creator is much better than a VS-only solution, give it a shot, by all means).
Keep in mind that I have no interest in upgrading to VS2010 yet, even if it's a hundred times easier to create an installer. That can come later, when the revenue starts rolling in :-)
Also be aware that the GUI component of this application is a totally separate executable from the console part. The console part is a simple "open file 1, do some work on it, write file 2" type and the GUI is a fairly standard "open file, do some stuff" beast so there's no tricky or wildly undocumented behaviour happening.
Basically, I'm looking for (at least) the following:
professional looking installer.
ability to specify where the application files go.
changes to the registry to allow double-clicks on my file extension to open the GUI app with the file as an argument.
needs to install everything required (my stuff, .Net if required, and so on).
This might be a bit more rant than answer but here it goes.
If there is one thing severely broken with Windows client software it is the deployment of applications.
My experience comes from working on NovaMind - Even though I have spent weeks over the years on setup issues, I am by no means an expert in setup technology and I try to focus on our actual product whenever possible. We have used InnoSetup, Visual Studio Setup Project 2008/2010 and finally we have switched to the WiX + Tools approach.
How do you install an application nowadays?
Web Apps: Enter a URL in a browser to get to a web app.
Mac: Drag the downloaded file (same for x64 and x86) to the Applications icon on the Mac. Done.
Windows: Download the right file (user needs to know about x64 and x86 architecture), execute it. Click ‘Next’ a dozen times, wait for the UAC to show, click yes and then hope that the installer did the right thing.
I think that if Windows had a better deployment system, a sane marketplace/app store and a proper live update feature, web apps might never have gotten that popular in the first place. Of course that’s an exaggeration but I believe a lot of damage has been done to the Windows applications ecosystem by not providing a sane, usable deployment model and even now Microsoft seems to pay very little attention to this problem.
How do you update applications nowadays?
Web Apps: No need. It is up to date.
Mac: No inbuilt magic but there is a widely used and powerful solution called Sparkle.
Windows: You better roll your own because there is nothing substantial out there.
ClickOnce should have changed all of this but failed to be usable for real commercial applications.
Here is the rundown:
InnoSetup and other script based installations are simple but cannot produce a .msi file — Some companies require .msi files to automate network deployments. You will also need to have a Windows Installer (.msi) based setup if you want to get the Windows Logo certification.
Visual Studio Setup Project 2008/2010 gives you the basics easily and you can configure a bunch of things but once you want to do the unthinkable like use a high quality icon or include a changing set of files into your setup, you’re screwed. We also had to manually fix the PackageCode and ProductCode every single time we built an update since Visual Studio managed to somehow mess up the assembly versions and would leave an older assembly when updating, thus corrupting the application.
WiX is the de-facto way to create setups on Windows and even the Microsoft Office Setup is supposedly created with WiX. WiX is not simple. There are books available for WiX!
Unfortunately, WiX alone is still not a good solution. We use the dotNetInstaller bootstrapper project to ensure the .NET Framework is installed and to wrap the .msi file and the bootstrapper into a single .exe file that people can download.
With all this you are mostly fine. There are always strange cases were customers don’t have the Windows Installer installed (and thus cannot run the embedded .msi file) or where the .NET Framework installation fails.
Things we haven’t been able to do so far:
Localizing our installer!
Providing a single download for both x64 and x86 — at the moment we only create a x86 installer because we don’t want our users to think about x64 vs. x86.
Have a nice setup UI that also works with high DPI settings. I think this might just be a thing that is not supported in MSI setup.
There is a free product called SharpSetup which seems to address some of these problems and allows you to write a Winforms based UI, but SharpSetup does not come with a bootstrapper and requires the .NET Framework — you can however write your own C++ code to react in this situation.
For live updates we have rolled our own solution and after many issues it is working okay.
You might also want to listen to Scott Hanselman’s podcast episode with Rick Brewster were they talk about the setup and deployment of Paint.NET — While I congratulate Rick and the Paint.NET team on their good setup, the necessity of such a complex solution saddens me.
If you absolutely need to use .msi then I would recommend WiX to anyone who wants to create an installer on Windows, but in the end I am extremely frustrated with the deployment situation on Windows. I have wasted weeks of my time over the years with silly setup issues. With setup you can only lose. You won’t win any happy customers because your setup works but you will lose and frustrate a lot of them if it doesn’t.
Another option is using Inno Setup. It allows you to fully customize installations, where to stick files on the target machine, modify the registry, and all that jazz. If you're willing to spend a bit more time learning a bit about the scripting required to achieve the results you want, it's a very powerful tool. (fulfills all of your requirements and much more) And most importantly, it's free =)
I've been using Inno Setup for all of my larger .NET programs. When the installer runs, it checks to see if .NET is installed and if not, downloads and installs it. As well, I've modified registry and made associations with extensions like you mentioned. Including DLL's with the installer is simple as well - Inno will lump all of the required files into a single executable that takes care of everything.
Additionally, since Inno has been around since 1997, a number of editors have arisen that help make the scripting process a lot easier.
I use Advanced Installer, it is dead simply, and I use it, because of the limitations of VS.
http://www.advancedinstaller.com/
The "downside" is that for fully automatic installation of dependencies you have to pay ;-)
If you want to create your installer fully in Visual Studio, but don't mind using external tools to help you in that job then have a look at a program of mine called SharpSetup. It allows you to build GUI using C#/WinForms, whereas backend is WiX based (which in turn means using WIndows Installer).
Visual Studio 2008 has built-in setup/installer support.
Add a new project to your solution, and select the 'Setup Project' option from the 'Other project types > Setup and Deployment' category.
Have a look at Windows Installer Deployment overview, and a step-by-step walkthrough
If you know scripting languages you can check out NSIS as an alternative to VS. There's enough documentation that you can copy paste their example installer and replace their file locations with your own.
While I'm not install expert, I've used Wix successfully. It's complicated to say the least.
I don't see any of these products being mentioned that I've seen clients use successfully.
http://www.installaware.com/
http://www.flexerasoftware.com/products/installshield.htm
http://www.wise.com/Products/Installations/WiseInstallationStudio.aspx
All provide localization, file/app for double click association, Framework bootstrapping and target location to the best of my knowledge. InstallAware and Wise provide some form of autoupdate support.

Categories

Resources