Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Chained msi packages in maintenance mode


4 replies to this topic

deramor

deramor
  • Full Members
  • 187 posts

Posted 18 May 2011 - 17:03

Hello all-

I have been searching the internet for answers with no luck so I thought to ask my question directly.

What I am trying to do:
I am trying to create an installation which utilizes the added feature of MSI chaining. As required, I am using only basic MSI projects. This installation will have no files itself but will be chaining multiple packages depending on user selection of features. I would just make one really large installation with all my files however I need to be able to install each small part separately. This is the method I have settled on.

My problem:
My issue is that I can not get the installation to reinstall a feature (in this case an entire installation) through maintenance mode (modify). The install launch conditions are correct and the installation does attempt to start. The installation finish screen states that it was interrupted and no changes have been made. This occurs when running both from the source and from add/remove programs screen.

More information:
I added my chained package to the parent installation with an Installation (run-time path) of: [SourceDir]Application1\msi file.
In the log file I created, the SOURCEDIR and OriginalDatabase properties are correct.
One thing I did notice however was that the IS_CHAINER_POST_COMMANDLINE property seemed incorrect given the run-time path setting and the state of the 2 properties.
It is set to: IS_CHAINER_POST_COMMANDLINE = /l"C:\Users\deramor\Desktop\hsi wrapper\log.txt" /qn /i"\"Application1\Teradyne HSSub Subsystem Application 1 RxDemo v1.0.msi\"".
I would expect this to include the fully qualified path to the msi file not just the relative path from the original database (msi) file.

If anyone has some clue as to how I can get a modify operation to succeed when chaining installations together, please don't hesitate.


One final helpful bit of information. In my research I found that it is very important to not have a compressed release output if you are chaining installations AND NOT streaming the chained installation files into your MSI file. All the documentation tells you to do is to select "No" to the popup message when adding the MSI file as a chained package then change it's relative path. This is incorrect since there is something going on with [SourceDir] and when the files are decompressed. Apparently, [SourceDir] is set to the temp location rather than being set to the source media. This was 2 days of trial and error and research and I felt like I owed the community a post on this.

overlordchin

overlordchin
  • Full Members
  • 100 posts

Posted 09 August 2012 - 21:20

Did you ever figure this out?

deramor

deramor
  • Full Members
  • 187 posts

Posted 09 August 2012 - 22:00

I have good news and bad news.

The bad news is that I did not find a way to do this. It is not supported by Windows security model. My issue was that the chained installers needed admin rights. These rights were never granted to the installers so they would fail. The reason the rights token was never passed to them was that Windows never asked me to elevate when I performed a modify action. The security model allows software "features" to be changed at will by users since an admin at one time allowed the software onto the system. The admin only is required to get involved again when removing the software completely from the system. I can not find the msdn article at the moment but feel free to confirm this on your own.

The good news is that I was able to do this with an Installscript MSI project. I simply added one feature for each product I want to install. Then I authored an installing event which performs the actual installation work in script. This method is also susceptible to the same admin restrictions mentioned above so I only allow users to install and remove all of these products during installs or removals.

overlordchin

overlordchin
  • Full Members
  • 100 posts

Posted 10 August 2012 - 15:42

I am doing something similar but have slightly different issues. If you look at my post here chained msi repair mode

You can see that what I am actually trying to do is get a repair on the parent msi to trigger a repair on the chained msi. We suppress the ui from the chained msi and use arpsyscomponent=1 to hide the icon in add/remove. It is also streamed into the main installation package which is desirable for our situation.

We havent had the problems of passing the security options down as we require admin permissions to run our installer period.

I tried changing the value of IS_CHAINER_POST_COMMANDLINE after reading your post but that didnt seem to work the way I had hoped it would. The repair didnt fire. If you have any insight I would love to hear it.

deramor

deramor
  • Full Members
  • 187 posts

Posted 25 September 2012 - 01:00

The only thing I can suggest is if you could search for your products one at a time to find their GUIDs. Then pass msiexec arguments to repair them. I saw that it is confused about the source in your linked post. I would think that because you stream the MSIs into your parent, that this would all get resolved for you. I don't think I can be much more help other then this.