Visio 2013 does not find custom .vsl files

Started by DieterS, January 05, 2013, 11:32:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DieterS

After installing Visio 2013 release (15.0.4420.1017) Visio did not find any of my .VSL files based on the Visio 2010 SDK. The VSLs did not show up in the AddOns Menu (and hence not in the Visio.AddOns collection).The same VSLs work fine with Visio 2010. And they did with the Visio2013 Preview Edition(!)
Have tested with VSLs compiled with VS2008 and VS2010. Compiled with Dynamic and statically linked ones. With Visio 2007 SDK and Visio 2010 SDK. No success. All VSLs are properly signed.
However, Visio 2013 does find its own VSL files (of course). Even the ones from Visio 2010.
Sysinternals ProcessMonitor shows, that my VSL files are indeed found by Visio when Visio starts (AddOns path is correct). They were opened, queried, closed and then silently ignored.
Has anyone else come upon this issue? Any thoughts where to look at?

Regards
Dieter

Paul Herber

Were the VSLs installed before or after Visio 2013?
How were the VSLs installed? A proper installer or are they recogrised via the Paths discovery method?
Electronic and Electrical engineering, business and software stencils for Visio -

https://www.paulherber.co.uk/

DieterS

They will be found via the AddOns path setting (as with the earlier Visio versions).
Since they contain some COM objects, they are additionally registered with regsvr32.
I'am not aware that there are additional installing steps for .vsl files.
What makes me wonder, is that this has been worked fine with the Preview Edition.
MS must have changed something between the preview and the final release.
May be this is not an visio issue but of the underlying office subsytem.

Dieter

aledlund

Dieter,
this currently is the rtm version, there may still be a ga version (although additional changes at this point would have to be very critical).
al

DieterS

Al, thanks for your comments. I will submit this issue to MS and wait for the Visio2013 SDK.
Dieter

Nikolay

Have Visio Visio 2013 RTM (x86) 15.0.4420.1017 installed.
Just verified this scenario - created a new VSL project with all-defaults using Visio 2010 SDK,
Set only  only the "Addon Path" in Visio settings (path discovery) - seems to work fine.

Maybe you could post your VSL here to try it out?

DieterS

Nikolay,
I can verify your post. A simple VSL based on the Visio 2010 SDK which displays only "Hello World" works fine.
However - our VSL does not.
Upon further investigation I found that our VSL (which is basically a DLL) references  a couple of other DLLs of our solution.
These DLLs are all signed and used by other modules of the application.
After I'm stripped the VSL so far that no one of these DLLs are referenced the VSL IS recognized by Visio 2013.
Microsoft is currently investigating this issue. I will post an update here upon the result.

Thanks
Dieter

DieterS

Just to keep you updated about this curious thing:

>>that our VSL (which is basically a DLL) references  a couple of other DLLs of our solution.
The vsl and our solution using it works fine, if these other dlls are copied into visios program directory (C:\Program Files (x86)\Microsoft Office\Office15). So visio seems to use the AddonPath setting only to look for vsl files - and no more for other dlls that these vsls may reference.
I'm still trying to get this issue accepted as a bug by MS.

Dieter

Nikolay

#8
Hi Dieter,

Yep, indeed so.. can reproduce this as well.
Maybe Visio 2013 got so smart that it does not load VSL if it depends on other DLLs fir security reasons?
Looks like a bug. Or are they somehow preparing to sandboxed deployment? Whatever.

The issue seem to exist in all scenarios -
it is not  important, if the VSL was "deployed" by path setting, or by the installer (published).
Looks like if a VSL depends on ANY other DLL (which happens to be neither Windows nor Visio dll), then Visio 2013 just does not load it. That's it.

Anyways, the workarounds:

1. You have already figured the first one out. Copy your DLL to Visio directory "C:\Program Files (x86)\Microsoft Office\Office15" or to "C:\Windows\SysWOW64".

2. A neat one (I think). Add a manifest to your VSL in project.

If you are using Visual Studio:

- Create file named "Visio2013.manifest" and put it to project directory.
The content should be: (change to your VSL/DLL names, add more entries if you have more than one dependent dll)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <file name="YourAddon.vsl"/>
    <file name="YouDependent.dll"/>
</assembly>

The main idea is to tell windows loader that all thse files are in one "assembly".

Now go to project settings -> Configuration Properties -> Manifest Tool -> Additional Manifest Files.
Put "Visio2013.manifest" in this field.

Build/Run. Should work now. At least worked for me.