Is there a free tool to modify InstallShield ism files?
Asked Answered
B

3

10

We have two install shield licenses - one for the developer of the installer and the other - for the CI server.

There is often a situation when another developer moves a project DLL to another location, thus breaking the installer.

I was wondering if there was a free tool, which would allow one to make small modifications to the ISM files. I am talking about small changes only, like fixing the DLL path or removing the DLL entirely. It is not my intention to "cheat" the license.

Thanks.

Beauteous answered 11/12, 2010 at 17:41 Comment(2)
What is the project type, MSI, InstallScript, or InstallScript MSI?Homoeo
The project type is MSI.Beauteous
H
7

If you go to the properties of the project, you can choose to store the ism file in an XML format. (It sounds like your project is already configured this way.) If this is the case, the structure of the XML file is easy enough to figure out.

Using any text or XML editor, you would then be able to update the path to the DLL.

I wouldn't suggest it for making large changes, but for small changes it shouldn't be a problem.

Just search for the name of the DLL. It will be in a XML tag. The source path that you need to change should be an attribute on that tag.

I've done this with both InstallScript and InstallScript MSI projects. If you are using a pure MSI project, your millage may vary.

Homoeo answered 28/12, 2010 at 21:19 Comment(1)
The Installshield XML format caused me problems some years ago. A better option is to use Microsoft's free MSI tool Orca.Sacred
C
4

InstallShield projects (.ISM) are stored in XML format ( DTD ) or Windows Installer Binary Format ( really an MSI just spelled backwards and the schema is in a precompiled format ) so it's not impossible to create some automation to update these files without having a single dependency on InstallShield.

You don't say what version or edition of InstallShield you are using but if you are entitled to any Stand Alone Build Licenses you could put that on the CI server and free up one license for another developer. Also the IDE and SAB come with a COM automation interface that you could use to do all kinds of interesting automation to solve this problem.

But I'd really suggest that you do what I do. Use Windows Installer XML to abstract your installers components into merge modules and then associate the merge modules to your InstallShield features. This takes a monolithic installer project and turns breaks it out to support distributed devlopment. I even wrote a custom tool called IsWiX that gives you an InstallShield like experience to maintain the WiX modules.

Colonist answered 11/12, 2010 at 18:8 Comment(6)
This is too complex for me, as I am not the dev who works on the installer. One thing I know is that the ISM file is a text file, which looks like a valid HTML. But its format does not make any sense to me.Beauteous
If you don't understand the underlying MSI tables and how they are represented in XML, I really, really wouldn't think about tweaking these by hand.Colonist
Sure, sure. That is why I am asking of a tool in the first place.Beauteous
If you are looking for an off the shelve solution, then no, there is no such tool. I could write one but I doubt it would be cost effective unless you are sure that there is only a handful of things you want it to be able to do.Colonist
Even if I am sure, it is still not cost effective for you to write. I'd just patiently wait for the installation maintainer to make the change...Beauteous
Well there's always throw up a VM, install the trial version and then roll the VM back.Colonist
C
4

Or you can see the contents of the .msi file using Orca tool modify the contents of the .msi database (which is really required to do minor modifications), this tool will come along with Installer SDK.

In order to change it you should know underlying MSI tables.

Cringle answered 15/12, 2010 at 5:54 Comment(1)
This wouldn't work because his InstallShield project (.ISM) is stored in XML format. This is preferred because storing the project in Binary format ( which ORCA could read ) would make consume more space in source control and prevent the ability to compare differences and branch / merge.Colonist

© 2022 - 2024 — McMap. All rights reserved.