cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
afxSam
Level 3

Small Upgrade won't install new files

This is my first InstallShield project so hopefully my problem will be something easy that I'm just completely over-looking.

Our company sells two different products that run off of the same executable. I'm making an installer that has all the files for our app, and it runs and installs perfectly. Then, I want to be able to make a separate installer that completely installs all the files for the 2nd app, but if the first app is preset, I just want it to add a few extra files into the 1st app's folders. So either install could install a full version, but it will just update the previously-installed app if it is preset.

All i do to differentiate these apps is set a value in the Property Manager that essentially says "thisIsApp1" or "thisIsApp2". I then use this value to install or not install certain Components. This works fine when I'm only installing one app or the other for the first time. BUT, if it's trying to upgrade the other app, it NEVER adds in the files. I want it to say "ok, the app1 is here, let's just add in the files that are specific to app2."

I change the Package Code and I've tried adding the REINSTALLMODE stuff to setup.ini. Nothing works! It says it's performing an update but nothing gets added.

Does anyone have ideas what I should be doing?? Am I completely off on this? Any help would be greatly appreciated.
Labels (1)
0 Kudos
(6) Replies
davech66
Level 4

You should just create a new project for 2nd app, using condition to find out whether the 1st app is there.
hope this helps.
0 Kudos
afxSam
Level 3

davech66 wrote:
You should just create a new project for 2nd app, using condition to find out whether the 1st app is there.
hope this helps.


Thanks for responding! This worked for getting the files into the first app but its getting all messed up when I try to uninstall. The installer thinks there are two different apps and so only uninstalls some things on the first uninstall, but leaves some other files. Subsequent uninstalls don't uninstall anything and then there's a bunch of junk left on the user's computers.

I can't just do a patch because we want both apps to be complete installers if the other app isn't present.
0 Kudos
davech66
Level 4

if you have issues with uninstall at this case, you can use vbscript custom function, use conditions-the script only called during uninstallation time.
0 Kudos
afxSam
Level 3

I found out that my main problem was. I am setting a Property for Is_App1 and then using this value as a condition to see if I should install a component or not. I hadn't, however, set the Component property "Reevaluate Condition" so when I came through on the reinstallation it wasn't checking to see if it should get installed again and thus was never adding the components for App2.

Now, I'm trying to set the msidbComponentAttributesTransitive property in what the Help Library calls the "Component Table", but unfortunately, I don't know how to access this property. Does anyone know how to do this?
0 Kudos
DebbieL
Level 17

The msidbComponentAttributesTransitive bit would need to be set in the Attributes column of the Components table, which you can access through the Direct Editor view.

A much easier way to set this bit is to select select Yes for the Reevaluate Condition setting for the component in the Components view. If you do that, InstallShield will update the appropriate Attributes record in the Components table for you.

I hope that helps.
0 Kudos
afxSam
Level 3

I did set the Reevaluate Condition checkbox but on the 2nd installer, it would remove everything that was already installed. I wanted to install App1, and then add App2 to it. On App1, the condition for App1 files would be true and so they would install. However, when App2 was installing the condition IS_APP1 would be false so it would remove all of App1's files while adding App2's.

To finally solve the problem, I just made both apps search to see if the other app was already present, and if so, set it's condition to be true also. So if App1 was present when App2 installed, both IS_APP1 and IS_APP2 would evaluate to true and keep both app's files. Otherwise it would only install App2 like it's supposed to.

Thanks for your help, everyone!
0 Kudos