Posted 18 years ago by Martin Lamothe
Avatar
Hi,

ILMerge is a great tool that allows developers to combine multiple assemblies into one.
http://research.microsoft.com/~mbarnett/ilmerge.aspx


Has anyone used with the ActiPro SyntaxEditor and UI Studio?

Does it work well?

Is it supported?

Regards,
Martin

[Modified at 02/07/2006 03:19 AM]

Comments (25)

Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Martin,

We've never tried it but since you have the licenses for SyntaxEditor and UIStudio you can give it a shot.

The only possible problem I can see is the licensing. We check the assembly that creates the instances of the SyntaxEditor, etc. controls for the Actipro license you own. As long as ILMerge preserves that information from your app's assembly into the merged assembly, it might work fine. You can test by deploying your merged app to another computer that doesn't have our controls installed on it. Then see if any licensing popups occur.

If you try it out, let us know the results.


Actipro Software Support

Posted 18 years ago by Martin Lamothe
Avatar
I used the sample project for the SyntaxEditor to test.

The merger works fine.

If I excute the resulting exe it loads the windows forms but I receive the evaluation notice :(

So what to do next? Can we workaround this somehow?
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Can you email us the merged EXE so we can take a look and see if the license info is in there? Please ZIP up the EXE.


Actipro Software Support

Posted 18 years ago by billb - Software Craftsman, Yye Software
Avatar
I've also tried this, but with a different package (Xenocode) and not only do I get the evaluation notice, it shows my company name in the Notice dialog (instead of Actipro Software). Not sure if this is useful information or not.
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Bill,

Could you also ZIP up a merged EXE of our sample project by using Xenocode and email that to us to test?


Actipro Software Support

Posted 18 years ago by billb - Software Craftsman, Yye Software
Avatar
Well, it's been removed from the build process now, but the next time I'm in the changing the settings in Xenocode, I'll add one for you and send it along.

Thanks.
Posted 18 years ago by Gareth - Director, Slyce Software Limited
Avatar
Has anyone found a solution or a workaround to this yet? I am needing to merge my assemblies, and the resulting merged assembly does not work.

Thanks,
Gareth.
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Have you tried the latest maintenance release? I believe we made a code change that should help with this in a recent release.


Actipro Software Support

Posted 18 years ago by Gareth - Director, Slyce Software Limited
Avatar
Yes, I am running SyntaxEditor 3.1.0204 and UIStudio 2.0.0062. The exception I get is TypeLoadException. Note that it is for UIStudio.NavigationBar with some weird numbers appended:

'ActiproSoftware.UIStudio.NavigationBar365330.ᐁ' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxx'.

Using Reflector, I have compared the myassembly.exe.licences resource of an ILMerged assembly with a standard assembly, and the content is exactly the same - same name, same contents.

Any further ideas?

Thanks,
Gareth.
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Sorry Gareth, I'm not sure. You'd probably be better off asking the makers of IL Merge what could be causing that. You can tell them we use the standard .NET licensing mechanism (LicenseProviders, licenses.licx file entries, etc.).


Actipro Software Support

Posted 18 years ago by billb - Software Craftsman, Yye Software
Avatar
You're probably right. I have another third party package that I use with my application that also uses the licenses.licx file and it also cannot be merged into another assembly. I'm using Xenocode for merging, so I get the impression that it's either not possible, or each merge ISV would have to special case access to licenses.licx somehow. I doubt there's much a company like Actipro can do about this.
Posted 18 years ago by karl - Senior Software Architect, Shelltools, LLC
Avatar
i've noticed that even renaming my exe (which i often do on install ) makes the license fail.
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Yes that will occur because the licensing mechanism checks for a manifest resource file named yourapplicationname.exe.licenses so that it can look for an embedded license. If you rename the .exe filename, then it will not match the included .licenses file so SyntaxEditor doesn't know how to find it.


Actipro Software Support

Posted 18 years ago by karl - Senior Software Architect, Shelltools, LLC
Avatar
but how does it know what the name of my exe is anyhow?
its not like syntaxeditor dll's are compiled against my executable.

karl /the ignorant
Posted 18 years ago by Gareth - Director, Slyce Software Limited
Avatar
Karl, you can get the executing assembly using Assembly.GetExecutingAssembly(). ActiPro, couldn't you change the lookup mechanism to search all top level namespaces in the assembly for a valid licence file resource when it isn't found where expected?

[Modified at 04/21/2006 07:47 PM]
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Yes, we just made a change which should look for any named .licenses file in the assembly. Email us if you'd like to try out a preview of the next maintenance release which has this code in it.


Actipro Software Support

Posted 18 years ago by karl - Senior Software Architect, Shelltools, LLC
Avatar
in the new build .210 , ILMerge is still failing because certian classes were redefined in each of the 3 activepro DLLS.. (however the licensing stuff is working (i.e i can rename the exe without getting a licensing issue)
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
We have been working with the ILMerge author the past few days to try and get it working so that our product will be functional with ILMerge. Hopefully we can get the issues resolved. We have narrowed down a couple things and he made a change for us that we need to test out. More to come soon...


Actipro Software Support

Posted 18 years ago by Martin Lamothe
Avatar
Hi ActiPro Team,

Any update to share on this initiative?

Kind Regards,
Martin
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
The developer at Microsoft who created the tool was doing it in his free time and we haven't had a response from him recently. Basically we got to the point where the latest of our code worked with the latest of his code except for one problem.

If you know about .NET licensing, a yourapp.exe.licenses file is embedded in the assembly which contains information generated from the licenses.licx file. It is some sort of hashtable that has entries for full type name and then the compiled license data. So what happens after the merge is that the full type names of the licensed controls has changed since instead of them being in an assembly like ActiproSoftware.SyntaxEditor.Net20.dll, they are now in MergedApp.exe.

So to review, the .licenses file still would have the full type name as "ActiproSoftware.SyntaxEditor.SyntaxEditor, ActiproSoftware.SyntaxEditor.Net20, ..." but now SyntaxEditor is in MergedApp.exe so when our licensing code asks .NET for a license for the SyntaxEditor Type, it is asking for a lookup on "ActiproSoftware.SyntaxEditor.SyntaxEditor, MergedApp, ..." but there is no entry for that key.

That is the remaining issue that I see. I'm not sure how to work around it from our end. Somehow the .licenses file needs to be updated so that the entries point to the new merged assembly instead of the pre-merged ones.

Make sense, anyone have any ideas?


Actipro Software Support

Posted 18 years ago by Gareth - Director, Slyce Software Limited
Avatar
I have found a solution: .NET Reactor. I discovered this application a few days back. It's main claim to fame is that it protects your .net assemblies from decompilation and reverse engineering by converting some of the MSIL to native and other methods. Anyway, it has some added benefits that aren't really marketed very well: it can do the same thing as ILMerge. It can add any supporting files to the same exe. The great thing is that it WORKS! I have tested SyntaxEditor, UIStudio as well as DevExpress components and it works perfectly. Not only that but it compresses the resulting exe quite substantially. It also has licensing capabilities.

I am not affiliated with the company at all (just a very satisfied customer), it's just that I don't get blown away by a product that often, but .NET Reactor did just that. It's also very affordable (and more powerful) compared to the competition I have also been testing over the past few days.

Anyway, enough ranting. Take a look: www.eziriz.com.

Good luck,
Gareth.

[Modified at 07/14/2006 09:25 PM]
Posted 18 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Great, thanks for the note Gareth. I'm sure some other customers will check it out. If ILMerge would find a way around the .licenses issue then it would work fine too.


Actipro Software Support

Posted 18 years ago by Martin Lamothe
Avatar
This is excellent news.

Great find Gareth. Thanks for sharing with the community.

Thanks to the Actipro for all their efforts with ILMerge and providing prompt answers and support to its customers.

-Martin
Posted 16 years ago by Gregor Scott - Reynolds & Reynolds Pty Ltd
Avatar
No matter what I try with ILmerge.exe, I cannot avoid the merged exe showing the license dialog.

Are there specific command line options known to generate a working .exe after merging with ILmerge?
Posted 15 years ago by Logicway
Avatar
See this topic for the resolution.
The latest build of this product (v24.1.0) was released 1 month ago, which was after the last post in this thread.

Add Comment

Please log in to a validated account to post comments.