Hi

I have a msi to which I need to make a .mst file which imports some registry entries into HKCU using self repair from an advertised shortcut. I´m pretty new to Install Shield and especially keypaths/self healing so please consider that.

The plan was to either take an existing shortcut from the original vendor msi and put the registry values in that component. That way I thought I was sure to trigger the self healing process. But this didn´t work since the shortcut isn´t advertised and when I changed it to be advertised it wanted a keyfile. And a registryentry isn´t a file. So I don´t know how to fix that.

I also tried creating an advertised shortcut myself and adding the registryvalues myself but the shortcut wouldn´t appear on the start menu at all.

So please guide me into the right direction. I just want to add some registry values (5 of them) and make them all work on all users of a computer via self healing.

I´m using Install Shield.
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
David,

try the following:

1 put all your user specific stuff in 1 component, make sure you link the component to a feature that will be installed.
2 add a regkey under HKCU to this component, for example HKCU\Software\<My APP>\UserSettingsComplete = 1, and make this the keypath for your usersettings-component
3 choose a shortcut you want to make advertised (or well, the exe it has to point to)
4 make the advertised shortcut to the component that includes your chosen exe

When triggering an advertised shortcut, Windows Installer will check ALL your component keypaths. Since the keypath for your UserSetting component will be missing, this will trigger the repair.

Hope this helps

PJ
Answered 01/22/2010 by: pjgeutjens
Red Belt

Please log in to comment
0
I did this:

I went to Setup Design and added a component under a feature that will be installed. In that component I added the registry values (went to Registry Data under the component and imported the reg values). I make one of the values key path for the component.

Then I went to "shortcuts". I created a new advertised shortcut and pointed to the component which contains the .exe file to start the program with. Saved the .mst file under a new name.

Then I installed the msi file using msiexec and with the transform file. I started the program as the same user who installed it and the registry values were there. Then I logged in a another local user but when I started the application from the start-menu no self healing took place and the registry values weren´t applied.

Any suggestions?
Answered 01/25/2010 by: Agathorn
Senior Purple Belt

Please log in to comment
0
Did you import HKCU registries or HKLM registries ?
Did you make the Shortcut available for that particular Feature. HKCU registries should be in the same feature which contains the Shortcut.
Answered 01/25/2010 by: mekaywe
Brown Belt

Please log in to comment
0
It is HKCU values I import. 4 values in one .reg file.

When I made the advertised shortcut I pointed to the component which contains the .exe file and that component is in the same feature as the "registrycomponent" which I created. Is there something else I have to do to make it work?
But I haven´t made anything other then that to: "make the shortcut avaiblable for that particular feature" (as you said). Maybe something I missed?

I´m guessing that the feature is installed since the .exe file which starts the installation, gets installed. If I go to add/remove programs I´m not able to see the feature when I click modify. It´s just a guide to the installation ... But when I check the registry it seems as if the feature is installed.
Answered 01/25/2010 by: Agathorn
Senior Purple Belt

Please log in to comment
0
The shortest route to success with this is to search John McFadyen's blog. There's also this web page on the subject and this.
Answered 01/25/2010 by: VBScab
Red Belt

Please log in to comment
0
Thanks for the tip. I actually got it to work by importing the reg. settings in the component which contains the .exe file to start the program with. I tried it before as well but it worked this time. Don´t ask me why :)
Now I face another problem, to give permissions to "users" to write in the program directory. Works fine in all subdirs and files but not in the main directory aka [INSTALLDIR]. Oh well I´ll just use setacl or something :)

Thanks for the help
Answered 01/25/2010 by: Agathorn
Senior Purple Belt

Please log in to comment
0
Be careful with SetACL, if passing properties which clontain resolved paths: these paths will have a trailing backslash which SetACL will choke on. So, instead of passing INSTALLDIR, pass [ProgramFilesFolder]\{actual name of INSTALLDIR}
Answered 01/26/2010 by: VBScab
Red Belt

Please log in to comment
0
Yeah I just distributed the package and I used the actual path of the program. Didn´t even think of using [INSTALLDIR], I guess I should have if I did things correctly. oh well, in this case it was a good thing I guess.
Thanks for the tip!
Answered 01/26/2010 by: Agathorn
Senior Purple Belt

Please log in to comment
Answer this question or Comment on this question for clarity