[gme-users] Question regarding distribution of an add-on
Kevin Smyth
ksmyth at isis.vanderbilt.edu
Mon Apr 23 17:04:41 CDT 2012
Hi Jae,
The traditional way of installing GME components is by running Windows'
regsvr32.exe with the path to the dll as the argument. This needs to be
done with elevated permissions on Vista/7. We've used the Inno Setup
tool to create installers that install GME components in this way (i.e.
with the "regserver" flag).
Technical details on this technique ("self-registration") are available
here:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms694515(v=vs.85
).aspx
Self-registration has fallen out of favor
(http://msdn.microsoft.com/en-us/library/windows/desktop/aa371608(v=vs.8
5).aspx). It's now suggested to explicitly enumerate the registry keys
your component requires. The GME installer uses WiX for this. For
example, here is the installer code for AutoLayout:
<Component Id="AutoLayout.dll">
<File Id="AutoLayout.dll" Name="AutoLayout.dll" KeyPath="yes"
Source="..\Tools\AutoLayout\$(var.Release)\AutoLayout.dll">
<TypeLib Id="E0EDD212-6AEC-41AE-8F45-GUID" Description="MGA
Interpreter TypeLibrary (AutoLayout)" Language="0" MajorVersion="1"
MinorVersion="0">
<Class Id="{DB312634-F076-4FB2-BCA9-GUID}" Context="InprocServer32"
Description="MGA.Interpreter.AutoLayout">
<ProgId Id="MGA.Interpreter.AutoLayout"
Description="MGA.Interpreter.AutoLayout" />
</Class>
</TypeLib>
</File>
<RegistryKey Root='HKLM'
Key='Software\GME\Components\Mga.Interpreter.AutoLayout'>
<RegistryValue Name='Description' Type='string' Value='AutoLayout'/>
<RegistryValue Name='Icon' Type='string' Value=',IDI_COMPICON'/>
<RegistryValue Name='Paradigm' Type='string' Value='*'/>
<RegistryValue Name='Tooltip' Type='string' Value='Auto Layout
PlugIn'/>
<RegistryValue Name='Type' Type='integer' Value='12'/>
<RegistryKey Key='Associated'>
<RegistryValue Name='HFSM' Type='string' Value=''/>
<RegistryValue Name='MetaGME' Type='string' Value=''/>
<RegistryValue Name='SF' Type='string' Value=''/>
<RegistryValue Name='UML' Type='string' Value=''/>
</RegistryKey>
</RegistryKey>
</Component>
('Type' is from Mga.idl's componenttype_enum, and should be 2 for AddOns
and 1 for Interpreters)
Note that you should also distribute the VC2010 (or VC2010SP1)
"redistributable" package, which includes .dlls that your .dll depends
on. This is available as an .exe installer or Windows Installer Merge
Module. http://www.microsoft.com/download/en/details.aspx?id=8328 . GME
installs this (since it is built using VS2010), but future versions of
GME may not necessarily install it.
To be able to debug the distributed .dll, you should set Visual Studio
to produce .pdb files, and you should save the .pdb, .dll, and source
code.
Kevin
From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Jae
young Bang
Sent: Monday, April 23, 2012 4:18 PM
To: gme-users
Subject: [gme-users] Question regarding distribution of an add-on
Hello.
I use GME 12.3.13 with VS 2010 to develop an add-on.
When I distribute an add-on I build, I used to pass over the entire code
and let the users build with VS 2010. It takes too much effort
(especially the use of VS 2010).
Is there any easier way to distribute my add-on? Maybe I could hand over
the DLL and somehow set it up on the other machines? ...
Thank you very much!
~Jae
jaeyounb at USC.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.isis.vanderbilt.edu/pipermail/gme-users/attachments/20120423/36cada55/attachment.html
More information about the gme-users
mailing list