/build/static/layout/Breadcrumb_cap_w.png

Editing MSI registry table with MST

Hello, I'm working on a couple project for running silently installer for different software.

Right now my big problem is QuickTime 7 wich is MSI for now (thank god for that).

Silent installation for that one is no problem. My problem is with some registry setting i want to push inside the installation.

I've found that the "registry table" in MSI is where a part of the setting are stored. I've aded several key within that table but there is one I can't, or don't know how to integrate it.

When i want to push a key that is not located in a subkey created by the installation there is no problem. But if the subkey was created with the installer, it doesnt create the key.

Anyone is working on registry table with Orca? I know that is not the best tools available on the market, but for now, it does the job very well. I already did the big thing to create some key, but I think im not far for a sucessfull silent installation with registry key.

Thanks for all that will answer!

0 Comments   [ + ] Show comments

Answers (6)

Posted by: meastaugh1 18 years ago
Senior Purple Belt
2
I've come across the same problem in trying to add the necessary value to hide the system tray icon for QT Player 7.

After spending some time fiddling around with the transform, I gave up. I'd tried associating the key with the same component as Quicktimeplayer.exe, creating it's own component and finally tried creating a new feature. None of which worked.

Then I saw this under the packages section for [url=http://www.appdeploy.com/packages/detail.asp?id=520] QTP7.[/url]The reg fix to get rid of the system tray icon does not seem to work inside the transform due to some race condition. The workaround it to have a VBS script plug the registry *AFTER* MSI is done installing QuickTime. I had to add a “Call VBS from Embedded Code” Custom Action after “InstallFinallize” in the “Execute Immediate” Sequence:

Hopefully there's a cleaner way of doing this as it seems a bit excessive/messy for one reg key. I've only just started working on this so will have to look into this further.

I don't know whether this is the cause of your issue, but thought it was worth a mention.
Posted by: wd40 18 years ago
Orange Senior Belt
2
Thanks for reply.

How i can add a custom action and define it in that table?

Could you help me on that? On copy/paste what you added in it?

Thanks!
Posted by: meastaugh1 18 years ago
Senior Purple Belt
2
In Orca, select the Custom Action table and create a new action with a unique name. Now decide where you want to put the VB code:
[url=http://msdn.microsoft.com/library/en-us/msi/setup/custom_action_type_6.asp]
  • as a binary stream in the binary table (6)[/url]
    [url=http://msdn.microsoft.com/library/en-us/msi/setup/custom_action_type_22.asp]
  • as a file installed with the product (22)[/url]
  • as a string stored [url=http://msdn.microsoft.com/library/en-us/msi/setup/custom_action_type_54.asp]in the property (54)[/url] [url=http://msdn.microsoft.com/library/en-us/msi/setup/custom_action_type_38.asp]or sequnce tables (38)[/url]

    The advice is to set the custom action to process asynchronously with no wait. The code for this is 192. So if you were going to use VBscript stored in the binary table, the CA type would be 6 + 192 = 198. You'd then specify the name of the Binary entry as the Source in the CA table.

    See the [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_list_of_all_custom_action_types.asp]MSDN CA reference[/url] for details.

    Once you've defined your customaction, you need to call it from the appropriate sequence
    table (eg InstallExecuteSequence): Enter the name of the CA in the action column. Specify any conditions you want: eg Not Installed so that your vb code is only run when installing the product and not uninstalling. You may want to create a corresponding uninstall CA. You then need to give it a squence number. I think the advice for this particular CA is to run after InstallFinalize.

    I'd recommend that you take a look at [url=http://www.appdeploy.com/packages/detail.asp?id=520]misterd's full recipe[/url] (half way down the QTP7 package page).
    Posted by: Robb Thomas 18 years ago
    Senior Yellow Belt
    0
    I just tried to do something similar.

    Look at the registry table, and look at all the components you have listed there. Figure out the name of a 'critical' component that is 'always' installed.

    On your new registry keys, set the component column to this setting. The value will need to be set the same as the 'critical' component.

    The installer with then execute the registry addition when it installs the component.

    If the transform doesn't work, try (I hate to suggest this) modifying the original MSI with the settings. Yeah it's ugly, but I've been having problems getting the transforms to work in some cases.


    Regards,
    ---- Robb ----
    Posted by: wd40 18 years ago
    Orange Senior Belt
    0
    Yeah that is exactly what i did. I did add some registry key and then associate them with a critical component. In my case with QuickTime 7 I associated them with "QuickTime.exe". Several other key are associated with it.

    My problem is if the subkey folder is already there (ActiveX subkey is created even if there is no record in the registry table) the registry key isnt created.

    If i told the installer to create the key within a inexistant subkey folder (I tried with ActiveX1) it works!

    That is my problem. Is this by design or there is a way to get around?

    Thanks for all!
    Posted by: xythex 18 years ago
    Orange Senior Belt
    0
    I ran into the same issue with QT7. I dropped a small VBscript into HKLM Run that not only set the registry flag to disable the tray icon but also to drop a custom qtplayersession.xml in every user profile in order to disable the hotpix list when you start quicktime.
    Rating comments in this legacy AppDeploy message board thread won't reorder them,
    so that the conversation will remain readable.
     
    This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ