VSTO

From Blue-IT.org Wiki

Revision as of 07:18, 30 October 2015 by Apos (talk | contribs) (Uninstall vsto plugin via command line)

Why

So, why VSTO here in an OpenSource themed wiki?

  1. since 2015 .NET is opensource (really)
  2. C# ist open source
  3. you can get the Visual Studio Comunity Edition for free (really free also for commercial use, if you are not working for a > 250 men company)
  4. Word an Excel are running fine with wine (see #MSOffice_2010_and_Wine) - Outlook not tested yet,

In most cases Word, Excel and Powerpoint are the most often used programs in business for daily communication. It is like it is. Beeing able - now - without any restrictions, to program MS-Office legally also for commercial usage. The only "drawback" is: you HAVE TO register the application and therefore create a microsoft account to be able to work with it.

Troubleshooting

Pre- and post build

Uninstall vsto plugin via command line

If you are developing you Addins with Visual Studio and you like to test your AddIn on the same machine, this won't work. VS complains when starting the AddIn, that it is already installed ;-(

Also this is Ok, it is very annoying when developing and testing on a single machine. The easiest way is to uninstall the plugin, befor you build it:

"c:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\VSTOInstaller.exe" /Uninstall "file:///C:/Test/ExcelTemplateTest.vsto"

You get the uninstall string if you search your registry (regedit.exe) in:

"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" 

VSTOInstaller.exe you can search for with

dir /s /b VSTOInstaller.exe

You can put this in the post build.

Cannot create Excel projects

Most likely: You have an PERSONAL.xslb File in the XSLT start folder (see above posts).

Certificate Issues

Creating self made codesigning certificates

Be aware: this needs a Windows 2008 Server with a fully configured Certificaton Authority. You can download a Windows Server 2008 Eval, use the 180 day evaluation license and install it within a virtual machine environment - no need to do updates other stuff. If you are not familiar with such a routine then this could take you a whole workday! If this is not possible you have to buy a valid certificate from e. g. verisign.

Create your own PKF certificate

  • PFX-Format (Personal Information Exchange), also known as PKCS #12

From here to there I look over the boarder and use Visual Studio 2013 to develop applications in C#. E. g. for Office VSTO Addins. I was confronted with the problem, that I could not start my own developed applications. Office merely refused to open and run the AddIn. To make a (very) long story short, this article saved my life:

Who is affected by the same problem can also follow this guide and use a valid certificate - which you have to buy:

I don't comment this behaviour of Windows in this case. Certainly it is good to have a strong certificate chain in a company. But hey microsoft, in some cases one simple just want to develop and share software in trusted environments without such a huge impact ;-) I am fulfilled with the believe, that MS sometimes thinks not only big, but practical.

When you successfully created your code signing certificate (.pfk) then put it on a secure place.

Create your public and private keys for signing

You have now to extract the public key of the certificate:

Create the public key (.snk file) for signing your assemblies with sn.exe. You can find the path to sn.exe on your lokal drive with

cd c:\
dir /b /s sn.exe

This could then look like this:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -p keypair.pfx key.snk

Now put the two files on an usb stick and go to the machine where you like to publish your software.

Install the certificate as a trusted publisher an mark it as non exportable!

Now you can sign your assemblies in Visual Studio with the key.snk.

Signtool

Thanks to this article, I could solve a lot of problems:

You basically can find the path to signtool.exe searching within the MS Visual Studio installation directory:

cd C:\Program Files (x86)
dir /s /b signtool.exe

which leads to:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe
C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe
C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\arm\signtool.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe


set MySignTool="C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe"
set PathToKeyFilePfx= ...
set ProjectDir= ...
set TargetFileName= PATH_TO_DLL
"%MySignTool" sign /f %PathToKeyFilePfx%" /p MY_PASSWORD /v "%ProjectDir%\obj\Debug\%TargetFileName%"

VS Settings

Reset VS settings

  • As admin: startmenu -> VS2013 -> VS-Tools -> Developer Command Prompt VS2103 (not native!)
devenv /resetuserdata
devenv /setup
  • As user: Open Developer Command Prompt VS2103 (not native!)
devenv /resetuserdata 
devenv /setup 
devenv /resetsettings