GoDiagram deployment scenarios

When the GoDiagram software is installed it registers two assemblies in the GAC. Does this mean that when my application is deployed, my setup must also register those assemblies in the GAC?

Can I distribute my app using no-touch deployment or does the fact that the GoDiagram assemblies exist in the GAC mean that no-touch deployment doesn’t work?

What about running in low-trust security? Is there anything within the GoDiagram assemblies that requires higher permissions than those provided in low-trust environments?



No, in fact Microsoft recommends against installing any assemblies in the GAC when you distribute an application. Just keep all the assemblies your application needs in one directory.
The GoDiagram assemblies have security permission declarations that you can see with the “permview” tool. We designed GoDiagram Win to be written completely in managed code with no external dependencies besides System (& mscorlib), Drawing and Windows Forms. The only permission it really needs is UIPermission.SafeSubWindows. But you can use it in a manner that would demand AllWindows and/or AllClipboard. If you ask it to load an Image from a file, of course it will need FileIOPermissionAccess.Read. I suppose you might want to do serialization, so you would need SecurityPermissionFlag.SerializationFormatter.
Any application using multiple assemblies requires some extra effort to load correctly for no-touch deployment–I haven’t tried this.

Hi Walter

I have tried it and so far i have failed
I have a simple test app based around the BasicApp sample (I'll email to to you separately). This test app is throwing a SecurityException inside the GoView constructor. The unusual thing is that the exception text is simply "Security Error".

The only way that I've found to solve this is to run the relevant zone with full-trust, which is definately not a real-world option.


I've been digging around a bit more this morning. My above statement is actually incorrect because it's never even getting as far as being able to call the GoView constructor.

It's actually failing when the JIT compiler is attempting to load Northwoods.Go.DLL. The security system kicks in and does a series of checks, and then blows up because the assembly does have the AllowPartiallyTrustedCallers Attribute.

So, my next question is why is AllowPartiallyTrustedCallers not applied?


Yes, that’s a new feature in .NET 1.0 SP2? and .NET 1.1.
It means we need to produce two separate sets of assemblies, for 1.0 and for 1.1. I suppose we can do that for GoDiagram version 2.1.


We try to deploy our smart client application using No Touch deployment and get the following error:
Unable to install or run the application. The application requires that assembly Northwoods.Go Version2.4.1.1 be installed in the Global Assemble Cache(GAC) first.
Please advise how to resolve this problem.

Send us e-mail.