Software Deployment Question

How to Create a Transform file to capture mid-installation config information?

03/26/2014 4153 views

I'm trying to create a deployment package for an application (Faster Asset Management 6.x). The installation uses a setup.exe that then calls a couple of individual .msi files (Crystal Reports, Faster Client). The Crystal .msi file isn't a problem but the Faster Client installation routine requires a few responses (EULA, default directory, etc) initally before beginning the installation and then during the installation asks for database connection information before finishing the installation.

My problem is in creating the transform file. I've tried using a couple of different tools (installShield and Transform Creator) to capture the responses and generate the .mst for me but both tools only grab the initial reponses (i.e. the programs exit once the installation routine kicks off thereby missing the mid-installation db connection information.

How can I create a transform file for this installation? I've opened the Faster Client .msi file with Orca and InstEd but I can find no tables or entries that appear to be related to the database connection information.

Thanks in advance for any advice.

4 Comments   [ + ] Show comments


  • So the Faster install asks questions after the Install Execute sequence? Take a look at the sequence tables and see if you can tell what is prompting for the information - I'll guess it's a custom action - and move it into the beginning of the sequence, then run Tuner again to create another transform.

    Does it perform the install if you use any of the quiet switches?

    Another approach would be to determine how it's storing that information (REG key, most likely?) and export it from a test machine and import into your MST. Then remove the action that prompts for the info.
  • Thanks, I'll try the sequence table approach,

    The db connection is being stored in the registry but the key is encrypted and (according to the vendor) cannot be mixed and matched with other workstations. Running the MSI w/ the usual slient switches fails after a bit, I'm assuming at the point where the connection info is required to be input.
  • Log the installation (/l*v c:\<logfilename>.log and examine the log file just after the configuration prompt is run.

    You'll probably see that it's populated some properties with your configuration options.
    Set those properties in your package, removing the need to run the CA in the first place, and disable the CA by adding a condition that will never be resolved, or remove it.
  • So I ran the installation with the logging parameters recommended by dunnpy. This excerpt captures the configuration prompt which comes from (I believe) a custom action named FConfigCA:

    Action ended 9:13:04: InstallValidate. Return value 1.
    MSI (s) (54:D8) [09:13:04:121]: Doing action: FConfigCAAction
    Action 9:13:04: FConfigCAAction.
    Action start 9:13:04: FConfigCAAction.
    MSI (s) (54:B0) [09:13:04:121]: Invoking remote custom action. DLL: C:\windows\Installer\MSI4816.tmp, Entrypoint: ConfigureFASTERInstall
    MSI (s) (54:F0) [09:13:04:131]: Generating random cookie.
    MSI (s) (54:F0) [09:13:04:131]: Created Custom Action Server with PID 3052 (0xBEC).
    MSI (s) (54:40) [09:13:04:161]: Running as a service.
    MSI (s) (54:40) [09:13:04:161]: Hello, I'm your 32bit Impersonated custom action server.
    SFXCA: Extracting custom action to temporary directory: C:\windows\Installer\MSI4816.tmp-\
    SFXCA: Binding to CLR version v2.0.50727
    Calling custom action FConfigCA!FConfigCA.CustomActions.ConfigureFASTERInstall
    Begin FASTER Config Install
    Begin FASTER Config Install: Create Event Log for FASTERWin.Client.6.00
    FASTER Config Install: ERROR creating Event Log for FASTERWin.Client.6.00, no messages can be logged from FSLib.DLL
    FASTER Config Install : New installation detected.
    FASTER Config Install : Checking for Installer Properties.
    Values DBType, DBMS:, DBU:, DBAccess:, DBName:, Target Directory:C:\Program Files\FASTER Asset Solutions\FASTER for Windows Fleet Management\
    ERROR in Configuration Properties : Values received are: DBType, DBMS:, DBUser:, DBAccess:, DBName:
    Installer 6.00 Configuration completed.
    MSI (s) (54!94) [09:15:26:643]: PROPERTY CHANGE: Adding REPORTPATH property. Its value is 'C:\Program Files\FASTER Asset Solutions\FASTER for Windows Fleet Management\'.
    MSI (s) (54!94) [09:15:26:643]: PROPERTY CHANGE: Adding DBTYPE property. Its value is 'MSSQL'.
    MSI (s) (54!94) [09:15:26:663]: Note: 1: 2727 2:
    MSI (s) (54!94) [09:15:26:663]: Note: 1: 2727 2:
    End FASTER Config Install
    Action ended 9:15:26: FConfigCAAction. Return value 1.
    MSI (s) (54:D8) [09:15:26:713]: Skipping action: RemoveExistingProducts (condition is false)
    MSI (s) (54:D8) [09:15:26:713]: Doing action: InstallInitialize
    Action 9:15:26: InstallInitialize.
    Action start 9:15:26: InstallInitialize.
    MSI (s) (54:D8) [09:15:26:713]: Machine policy value 'AlwaysInstallElevated' is 0
    MSI (s) (54:D8) [09:15:26:713]: User policy value 'AlwaysInstallElevated' is 0
    MSI (s) (54:D8) [09:15:26:713]: BeginTransaction: Locking Server
    MSI (s) (54:D8) [09:15:26:713]: Server not locked: locking for product {37839995-92B6-42CB-98B6-1C71E7F85609}
    Action ended 9:15:26: InstallInitialize. Return value 1.
    MSI (s) (54:D8) [09:15:26:873]: Doing action: ProcessComponents
    Action 9:15:26: ProcessComponents. Updating component registration
    Action start 9:15:26: ProcessComponents.
    MSI (s) (54:D8) [09:15:26:873]: Note: 1: 2205 2: 3: MsiPatchCertificate
    MSI (s) (54:D8) [0

    I believe the line listing "Values received" indicates the dialog box requiring me to enter DBtype, DBUser, etc. A couple of lines down where DBTYPE is 'MSSQL' is after I supplied the config information but I don't see any of the other values I supplied.

    I searched the Faster .msi file for "FConfigCAAction" and found it listed in the InstallExecuteSequence table as well as the CustomAction table. Its sequence number is shown as 1401; the first line of the log excerpt shows InstallValidate as ending just before the FConfigCAAction runs. Its sequence number is 1400.

    If I understand vjaneczko correctly, I could modify the sequence number of the FConfigCAActin to force it to run earlier and thereby perhaps capturing the config in a response transform? The part of the install that the transform utilities are able to capture appear to be the CostInitialize and FileCost actions, shown in the InstallExecuteSequence as having sequence numbers of 800 and 900, respectively. Can I just change the sequence number of FConfigCAAction to, say, 801?

    This is way down in the weeds for me, so I apologize if I'm off in left field on this.

    Thanks again all.

Be the first to answer this question

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