Question

IL Merge??

Posted 9 years ago by Avatar Martin Lamothe
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 9 years ago by Actipro Software Support - Cleveland, OH, USA
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 9 years ago by Martin Lamothe
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 9 years ago by Actipro Software Support - Cleveland, OH, USA
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 9 years ago by billb - Software Craftsman, Yye Software
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 9 years ago by Actipro Software Support - Cleveland, OH, USA
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 9 years ago by billb - Software Craftsman, Yye Software
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 8 years ago by Gareth - Director, Slyce Software Limited
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 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by Gareth - Director, Slyce Software Limited
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 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by billb - Software Craftsman, Yye Software
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 8 years ago by karl - Senior Software Architect, Shelltools, LLC
i've noticed that even renaming my exe (which i often do on install ) makes the license fail.
Posted 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by karl - Senior Software Architect, Shelltools, LLC
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 8 years ago by Gareth - Director, Slyce Software Limited
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 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by karl - Senior Software Architect, Shelltools, LLC
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 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by Martin Lamothe
Hi ActiPro Team,

Any update to share on this initiative?

Kind Regards,
Martin
Posted 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by Gareth - Director, Slyce Software Limited
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 8 years ago by Actipro Software Support - Cleveland, OH, USA
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 8 years ago by Martin Lamothe
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 6 years ago by Gregor Scott - Reynolds & Reynolds Pty Ltd
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 6 years ago by Logicway
See this topic for the resolution.
Information The latest build of this product (2014.1 build 0321) was released 4 days ago, which was after the last post in this thread.

Add a Comment

Please log in to a validated account to post comments.