/build/static/layout/Breadcrumb_cap_w.png

mst doesn't add chosen components/features

Hi,

I've got an application which I'm trying to repackage by creating a mst file. The application install file is an exe file which extracts and starts a msi file. By default the msi file will install 5 of 6 components. What I want to do is to install the component that is not installed by default, and not install 2 of the components which are installed by default. I extracted the exe file and used the msi file I found there. From this I used Wises Install Tailor and created the mst file.
The problem is that when I do the install, the features settings seems to be as they are default in the msi file, because the 5 default components get installed and not the 6th component that I want installed. I even tried to edit the msi file directly, but the same thing happens.
The only way I can seem to get the installation as I prefer is by doing an Administrativ install using msiexec /a.
I'm going to distribute this application via Citrix Installation Manager.
Can I use the Administrative install and distribute the msi file that gets created in the administrative install, or is there a way I can create a mst file that will overcome the problems I've had so far?
I'm also considering tryin Orca as a last try, but I guess it won't any difference..?

Thanks in advance!

0 Comments   [ + ] Show comments

Answers (26)

Posted by: anonymous_9363 15 years ago
Red Belt
0
- What command line are you using for the install? This presumes you have tested the install stand-alone, before allowing Citrix to get in the way, which is always a good idea, whatever the deployment mechanism might be.
- Have you logged the install, to determine if the transform is being applied?
Posted by: timmsie 15 years ago
Fourth Degree Brown Belt
0
If you open the vendor msi in orca and apply your mst to it:

Does it change the "level" in the feature table for the features that your trying to change.
or does the INSTALLLEVEL property get changed.

Also have you checked that there isn't a custom action that sets INSTALLLEVEL depending on another parameter

What is the app?
Posted by: jgb 15 years ago
Orange Belt
0
This is my command line: "msiexec /i xxxx.msi TRANSFORMS=xxxx.mst /qb /log m:\logfile.log

I do believe the mst is beeing applied because in the end of the logfile it says:
Property(S): TRANSFORMS = |F:\IKT\Drift\Citrix\PS4\IMShare\Basware v1\Basware Invoice Processing (IP)\BasWare Invoice Processing (IP) 5.0 Patch 1.mst
Property(S): RecacheTransforms = F:\IKT\Drift\Citrix\PS4\IMShare\Basware v1\Basware Invoice Processing (IP)\BasWare Invoice Processing (IP) 5.0 Patch 1.mst

But if I open the mst file in Wise, when I go and look at Features, the default values from the msi file is listed.
Posted by: jgb 15 years ago
Orange Belt
0
I'm quite new at this, but when I open the files in Orca, the level of the choosen components to install has changed with the value 100. The components that's not choosen for install has the value 101.
How can I check if there is a custaom action that sets INSTALLLEVEL?
If I go to CustomAction in Orca, it lists a lot of lines starting with InstallTailorPropertyxx

The name of the app is Basware Invoice Processing

I can get a correct installation (as far as I can see) using the msi file created if I make an administrative install (msiexec /a).
I don't know if this is a way to do it, or if best practice is to make mst files
Posted by: anonymous_9363 15 years ago
Red Belt
0
- I'd recommend that folks ALWAYS use verbose logging:

msiexec /i xxxx.msi TRANSFORMS="xxxx.mst" /qb /l*v m:\logfile.log

- In the log, you can easily tell which features were selected for installation, as they will have entries like this:

MSI (s) (38:90) [22:18:04:610]: Feature: Whatever; Installed: Absent; Request: Local; Action: Local
where you can see the feature called 'Whatever' isn't present on the workstation (Installed: Absent) but has been selected for installation (Request: Local).
Posted by: jgb 15 years ago
Orange Belt
0
I went through the logfile, and it says:
Admin; Installed: Absent; Request: Null; Action: Null

and I can see that Request should be Local insted of Null.
Using Wise Install Tailor, I chose to install the Admin module, so I'm not sure why the Request says NULL.... are there other settings I have to check beside making my choices going through the install wizard ?
Posted by: timmsie 15 years ago
Fourth Degree Brown Belt
0
This explains about the INSTALLLEVEL property
http://msdn.microsoft.com/en-us/library/aa369536.aspx

So as you say the value changes to 100 from 101 then the INSTALLLEVEL must be set to 100

You can see the INSTALLLEVEL property in the "Property" table

As for the custom action - it will be a "type" 51 with the source value of INSTALLLEVEL and the "target" will be the value it gets set to.

Hope that helps with your understanding at least and maybe not with your problem
Posted by: anonymous_9363 15 years ago
Red Belt
0
I went through the logfile, and it says:
Admin; Installed: Absent; Request: Null; Action: Null
This is how the 2 features ("features", remember, NOT "components") which you DON'T want to be installed should look. Do they or are they also set as "Request: Local"? If they are, you need to double-check that the transform is being applied, as I don't think it is.

It's easy enough to tell if the transform is being applied, as your log file will be littered with lines with the text "Transforming table [TableName]" where "[TableName]" is the name of, er, an MSI table. One of the first tables will be the 'Property' table, so I expect the first hit will look like this:MSI (s) (78:C0) [15:39:26:623]: Transforming table Property.

If there are NO such entries, your transform isn't being applied.
Posted by: jgb 15 years ago
Orange Belt
0
There is several transforming table properties in the script, but still doesn't seem to add the components I chose, the components chosen shows the value Absent and NULL. also the productcode doesn't change:
MSI (s) (2C:08) [19:34:14:332]: Transforming table Property.
MSI (s) (2C:08) [19:34:14:332]: Command Line: IP=M:\Program Files\BasWare\IP\ TARGETDIR=M:\ ALLUSERSPROFILE=M:\Documents and Settings\All Users\ BASWARE=M:\Program Files\BasWare\ WORKSTATION=M:\Program Files\BasWare\IP\Workstation\ INSTALLDIR=M:\Program Files\BasWare\IP\Workstation\ ROOTDRIVE=M:\ SECONDSEQUENCE=1 SHARED=M:\Program Files\BasWare\Shared\ SHARED2=M:\Program Files\BasWare\Shared\ EXECUTEACTION=INSTALL USERPROFILE=M:\Documents and Settings\ctxinstall\ ACTION=INSTALL SOURCEDIR=F:\IKT\drift\citrix\ps4\imshare\Basware v1\Basware Invoice Processing (IP)\ MS.3207D1B0_80E5_11D2_B95D_006097C4DE24=M:\WINDOWS\system32\ MS.576D64B0_7413_11D2_B954_006097C4DE24=M:\WINDOWS\system32\ MS.7EBEDD31_AA66_11D2_B980_006097C4DE24=M:\WINDOWS\system32\ MS.7EBEDD3E_AA66_11D2_B980_006097C4DE24=M:\WINDOWS\system32\ MS.8C0C59A0_7DC8_11D2_B95D_006097C4DE24=M:\WINDOWS\system32\ BASWARE.5688F3CB_3811_4029_AEB6_8FA9F70EF327=M:\Program Files\Basware\ SHARED.5688F3CB_3811_4029_AEB6_8FA9F70EF327=M:\Program Files\Basware\Shared\ INSTALLDIR.5688F3CB_3811_4029_AEB6_8FA9F70EF327=M:\Program Files\Basware\Shar
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding PackageCode property. Its value is '{408DC28E-C368-4209-94FD-A3F658ED5310}'.
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding RecacheTransforms property. Its value is 'F:\IKT\drift\citrix\ps4\imshare\Basware v1\Basware Invoice Processing (IP)\BasWare Invoice Processing (IP) 5.0 Patch 1.mst'.
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding TRANSFORMS property. Its value is '|F:\IKT\drift\citrix\ps4\imshare\Basware v1\Basware Invoice Processing (IP)\BasWare Invoice Processing (IP) 5.0 Patch 1.mst'.
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding TRANSFORMSSECURE property. Its value is '1'.
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding TRANSFORMSATSOURCE property. Its value is '1'.
MSI (s) (2C:08) [19:34:14:332]: Product Code passed to Engine.Initialize: '
MSI (s) (2C:08) [19:34:14:332]: Product Code from property table before transforms: '{B17CC595-63A6-488B-A653-F0B0E2383378}'
MSI (s) (2C:08) [19:34:14:332]: Product Code from property table after transforms: '{B17CC595-63A6-488B-A653-F0B0E2383378}'
MSI (s) (2C:08) [19:34:14:332]: Product not registered: beginning first-time install
MSI (s) (2C:08) [19:34:14:332]: PROPERTY CHANGE: Adding ProductState property. Its value is '-1'.

the log also has a lot af InstallTailor entries, so I guess the installation has figured out that InstallTailer has been used -but I'm not sure if the mst file is correctly added...
Action start 19:34:14: InstallTailorProperty23.
MSI (s) (2C:08) [19:34:14:426]: Transforming table CustomAction.
Action ended 19:34:14: InstallTailorProperty23. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: InstallTailorProperty24
Action 19:34:14: InstallTailorProperty24.
Action start 19:34:14: InstallTailorProperty24.
MSI (s) (2C:08) [19:34:14:426]: Transforming table CustomAction.
Action ended 19:34:14: InstallTailorProperty24. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: InstallTailorProperty25
Action 19:34:14: InstallTailorProperty25.
Action start 19:34:14: InstallTailorProperty25.
MSI (s) (2C:08) [19:34:14:426]: Transforming table CustomAction.
MSI (s) (2C:08) [19:34:14:426]: PROPERTY CHANGE: Adding System.7EBEDD31_AA66_11D2_B980_006097C4DE24 property. Its value is 'M:\WINDOWS\system32\'.
Action ended 19:34:14: InstallTailorProperty25. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: InstallTailorProperty26
Action 19:34:14: InstallTailorProperty26.
Action start 19:34:14: InstallTailorProperty26.
MSI (s) (2C:08) [19:34:14:426]: Transforming table CustomAction.
Action ended 19:34:14: InstallTailorProperty26. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: InstallTailorProperty27
Action 19:34:14: InstallTailorProperty27.
Action start 19:34:14: InstallTailorProperty27.
MSI (s) (2C:08) [19:34:14:426]: Transforming table CustomAction.
MSI (s) (2C:08) [19:34:14:426]: PROPERTY CHANGE: Adding System.7EBEDD3D_AA66_11D2_B980_006097C4DE24 property. Its value is 'M:\WINDOWS\system32\'.
Action ended 19:34:14: InstallTailorProperty27. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: LaunchConditions
Action 19:34:14: LaunchConditions. Evaluating launch conditions
Action start 19:34:14: LaunchConditions.
Action ended 19:34:14: LaunchConditions. Return value 1.
MSI (s) (2C:08) [19:34:14:426]: Doing action: FindRelatedProducts
Action 19:34:14: FindRelatedProducts. Searching for related applications
Action start 19:34:14: FindRelatedProducts.
MSI (s) (2C:08) [19:34:14:426]: Skipping FindRelatedProducts action: already done on client side
Action ended 19:34:14: FindRelatedProducts. Return value 0.
MSI (s) (2C:08) [19:34:14:426]: Skipping action: ISPreventDowngrade (condition is false)
MSI (s) (2C:08) [19:34:14:426]: Skipping action: CCPSearch (condition is false)
MSI (s) (2C:08) [19:34:14:426]: Skipping action: RMCCPSearch (condition is false)
MSI (s) (2C:08) [19:34:14:426]: Doing action: ValidateProductID
Action 19:34:14: ValidateProductID.
Posted by: anonymous_9363 15 years ago
Red Belt
0
There is several transforming table properties in the script, but still doesn't seem to add the components I chose, the components chosen shows the value Absent and NULL. also the productcode doesn't change:
First, please use the 'CODE' tag (accessed by clicking the button marked '<%' in any Reply To Message window) when posting lengthy texts like log files.

Second, why would you expect the ProductCode to change? Does your transform change it? If it does, stop it doing it that!

Third, your command line properties really belong in the transform. You can still override them on the command line but yours is kind of unwieldy!

Fourth, "FEATURES", not "COMPONENTS"! :)

Let me digest this for a while and I'll come back to you.
Posted by: anonymous_9363 15 years ago
Red Belt
0
These properties have no place on the command line and should be removed:
ALLUSERSPROFILE
EXECUTEACTION
USERPROFILE
ACTION
MS.3207D1B0_80E5_11D2_B95D_006097C4DE24
MS.576D64B0_7413_11D2_B954_006097C4DE24
MS.7EBEDD31_AA66_11D2_B980_006097C4DE24
MS.7EBEDD3E_AA66_11D2_B980_006097C4DE24
MS.8C0C59A0_7DC8_11D2_B95D_006097C4DE24
BASWARE.5688F3CB_3811_4029_AEB6_8FA9F70EF327
SHARED.5688F3CB_3811_4029_AEB6_8FA9F70EF327
INSTALLDIR.5688F3CB_3811_4029_AEB6_8FA9F70EF327

I've never seen the 'InstallTailorPropertyxx' properties before and I've done more response transforms than I care to remember. Is an embedded MSI being called somewhere in the install? Check the %TEMP% folder during the 'parent' MSI's execution.

To begin with, I'd test the install using a conventional target, i.e. a local hard drive, rather than a network drive. That always complicates things. When you have that down, THEN switch your ROOTDRIVE, INSTALLDIR, etc.
Posted by: jgb 15 years ago
Orange Belt
0
Thank you for all your help so far all of you!
Still struggeling, and trying to figure out what's wrong trying to read the logs.
I've checked the INSTALLLEVEL, and it is set to 100. All the components I want installed has the value 100 and the ones I don't want to install has the value 101.
In the Property table, the components I've chosen that's not installed by default from the msi has the entries "INSTALL_NOTDEFAULT" which I believe will be correct.
Posted by: jgb 15 years ago
Orange Belt
0
Get your point, new at this - my first post on the forum [&:]
Posted by: jgb 15 years ago
Orange Belt
0
The install file is actually an exe file with an embedded msi, I extracted the file and collected the msi. Would it be more correct to use the exe file?
I have already tried the install on the local drive, but I can do another try and see if the log and mst file will look different
Posted by: anonymous_9363 15 years ago
Red Belt
0
No, stick with the MSI.

I suspect that the INSTALL_DEFAULT property is being used in the MSI as a condition for the various features. Search through the MSI for that property and let us know what you find.
Posted by: jgb 15 years ago
Orange Belt
0
This is an extract from the condition table:

Admin 1 INSTALL_ADMIN ="INSTALL_DEFAULT"
Admin 101 INSTALL_ADMIN="INSTALL_NOTDEFAULT"
AdminLocal 1 SCTARGET_ADMIN="LOCAL" AND SCLOCATION="STARTMENU"
AdminLocal 101 SCTARGET_ADMIN="REMOTE"
AdminLocalDT 1 SCTARGET_ADMIN="LOCAL" AND SCLOCATION="DESKTOP"
AdminLocalDT 101 SCTARGET_ADMIN="REMOTE"
AdminRemote 1 SCTARGET_ADMIN="REMOTE" AND SCLOCATION="STARTMENU"
AdminRemote 101 SCTARGET_ADMIN="LOCAL"
AdminRemoteDT 1 SCTARGET_ADMIN="REMOTE" AND SCLOCATION="DESKTOP"
AdminRemoteDT 101 SCTARGET_ADMIN="LOCAL"
BWCalctax 0 INSTALL_CALCTAX="INSTALL_NOTAVAILABLE"
BWCalctax 1 INSTALL_CALCTAX="INSTALL_DEFAULT"
BWCalctax 101 INSTALL_CALCTAX="INSTALL_NOTDEFAULT"
BWOrderCheck 0 INSTALL_ORDERCHECK="INSTALL_NOTAVAILABLE"
BWOrderCheck 1 INSTALL_ORDERCHECK="INSTALL_DEFAULT"
BWOrderCheck 101 INSTALL_ORDERCHECK="INSTALL_NOTDEFAULT"
BWOrderCheckC 0 INSTALL_ORDERCHECK_C="INSTALL_NOTAVAILABLE"
BWOrderCheckC 1 INSTALL_ORDERCHECK_C="INSTALL_DEFAULT"
BWOrderCheckC 101 INSTALL_ORDERCHECK_C="INSTALL_NOTDEFAULT"
BWTransfer 0 INSTALL_TRANSFER="INSTALL_NOTAVAILABLE"
BWTransfer 1 INSTALL_TRANSFER="INSTALL_DEFAULT"
BWTransfer 101 INSTALL_TRANSFER="INSTALL_NOTDEFAULT"
BWWorkFlowClient 0 INSTALL_WORKFLOWCLIENT="INSTALL_NOTAVAILABLE"
BWWorkFlowClient 1 INSTALL_WORKFLOWCLIENT="INSTALL_DEFAULT"
BWWorkFlowClient 101 INSTALL_WORKFLOWCLIENT="INSTALL_NOTDEFAULT"
FastScan 0 INSTALL_FASTSCAN="INSTALL_NOTAVAILABLE"
FastScan 1 INSTALL_FASTSCAN="INSTALL_DEFAULT"
FastScan 101 INSTALL_FASTSCAN="INSTALL_NOTDEFAULT"
FastScanLocal 1 SCTARGET_FASTSCAN="LOCAL" AND SCLOCATION="STARTMENU"
FastScanLocal 101 SCTARGET_FASTSCAN="REMOTE"
FastScanLocalDT 1 SCTARGET_FASTSCAN="LOCAL" AND SCLOCATION="DESKTOP"
FastScanLocalDT 101 SCTARGET_FASTSCAN="REMOTE"
FastScanRemote 1 SCTARGET_FASTSCAN="REMOTE"
FastScanRemote 101 SCTARGET_FASTSCAN="LOCAL"
Master 0 INSTALL_MASTER="INSTALL_NOTAVAILABLE"
Master 1 INSTALL_MASTER="INSTALL_DEFAULT"
Master 101 INSTALL_MASTER="INSTALL_NOTDEFAULT"
MasterLocal 1 SCTARGET_MASTER="LOCAL" AND SCLOCATION="STARTMENU"
MasterLocal 101 SCTARGET_MASTER="REMOTE"
MasterLocalDT 1 SCTARGET_MASTER="LOCAL" AND SCLOCATION="DESKTOP"
MasterLocalDT 101 SCTARGET_MASTER="REMOTE" OR INSTALL_MASTER="INSTALL_NOTDEFAULT"
MasterRemote 1 SCTARGET_MASTER="REMOTE" AND SCLOCATION="STARTMENU"
MasterRemote 101 SCTARGET_MASTER="LOCAL"


And this is a clip from the property table

INSTALL_MDAC INSTALL_DEFAULT
ISCHECKFORPRODUCTUPDATES 1
MINIMIZEDIALOGS 0
INSTALL_ADMIN INSTALL_NOTDEFAULT
INSTALL_CALCTAX INSTALL_NOTDEFAULT
INSTALL_FASTSCAN INSTALL_DEFAULT
INSTALL_FINEREADER INSTALL_DEFAULT
INSTALL_IPSTATUSAPI INSTALL_NOTDEFAULT
INSTALL_MASTER INSTALL_DEFAULT
INSTALL_MONITOR INSTALL_DEFAULT
INSTALL_ORDERCHECK INSTALL_NOTDEFAULT
INSTALL_ORDERCHECK_C INSTALL_NOTDEFAULT
INSTALL_PROCLIENT INSTALL_DEFAULT
INSTALL_ROWDATACLIENT INSTALL_DEFAULT
INSTALL_TRANSFER INSTALL_NOTDEFAULT
INSTALL_USERLOGIN INSTALL_DEFAULT
INSTALL_WORKFLOWCLIENT INSTALL_NOTDEFAULT
SCTARGET_ADMIN LOCAL
SCTARGET_FASTSCAN LOCAL
SCTARGET_MASTER LOCAL
SCTARGET_MONITOR LOCAL
SCTARGET_PROCLIENT LOCAL
IPROOTDIR http://
IPROOT_EXETARGET \\ServerName\BWRoot\Executables\


I chose to install: Admin, Calctax, Master, Monitor, Transfer, Workflow
Posted by: timmsie 15 years ago
Fourth Degree Brown Belt
0
Change the :
INSTALL_ADMIN property value to INSTALL_DEFAULT
INSTALL_CALCTAX property value to INSTALL_DEFAULT
INSTALL_TRANSFER property value to INSTALL_DEFAULT
INSTALL_WORKFLOWCLIENT property value to INSTALL_DEFAULT
Posted by: jgb 15 years ago
Orange Belt
0
Thank you, this resolved the problem!
I have a question though: Shouldn't install tailer be able to set this change in the transform file by itself, or is this a usual way of doing it?

Only thing left now (besides some thoroughly testing) is to register a dll.
What is the best way to get that into a package? it would be a command like: regsvr32 xxx.dll
Posted by: AngelD 15 years ago
Red Belt
0
hehe nice heads-up timmsie!

jgb:
InstallTailor don't take into account of conditions, only the INSTALLELVEL combined with Feature.Level for feature.
BAD to use any DLL self-reg action.
As you are using Wise use the wisecompcap exe to generate a .reg file for the COM advertising info and then import it to a component.
Most often it also works by just turning on advertising and then import the installed DLL file for wise to populate the COM-advertise related tables.
Posted by: timmsie 15 years ago
Fourth Degree Brown Belt
0
Good to here that works. Mostly thanks to Ian, I just stole his thunder at the end [;)]

For registration read AngelD's post completely agree
Posted by: anonymous_9363 15 years ago
Red Belt
0
Mostly thanks to Ian, I just stole his thunder at the end [;)]I was busy packaging for a change! LOL

The detail on registering COM+ DLLs here is sketchy (no offence, lads!) so search AppDeploy for WiseComCapture. There you'll find at least one post with some fairly detailed instructions. Note that if you come across one mentioning a script I built to do multiple files, ignore it: after finding adulterated copies all over the web, I stopped sending it out.
Posted by: jgb 15 years ago
Orange Belt
0
Thank you all! [:D]
I'm waiting for the systemowner to return with feedback whether we will need the selfregistration of the dll file, but if so, and I need more help, I will open a new post with a subject more suitable
Posted by: anonymous_9363 15 years ago
Red Belt
0
In my experience, when you ask that question, the system owner will stare at you for rather longer than is polite, blink a couple of times, blush, and then launch into some diatribe intended to send you away while he/she scuttles off to work out what on Earth you were talking about.

If it registers OK using RegSvr32, you'll almost certainly need to add its registration information. No harm can come from adding it anyway so just go ahead.
Posted by: jgb 15 years ago
Orange Belt
0
he, he, you are so right! [:D] Needed that laugh now, has been too long days at work lately... and ofcourse, answer from systemowner -via software supplier - we need the selfregistration of the file.... I'll open a new post on the forum.....
Posted by: anonymous_9363 15 years ago
Red Belt
0
No need to post a new question. See post # 22.
Posted by: jgb 15 years ago
Orange Belt
0
Used wisecomcapture as explained. Just one question in the end: The dll is not in the installation package, because it's registering a dll from a connected server. I haven't deleted the entries in the tables (only exist in the Registry table), do I need to do this?
(Found a post from Symantecs pages: "Step 3:
Now delete the registry entries from "Class" table, "ProgID" Table, "Registry" table, which is associated with "Comdlg32.ocx" Component in the package. And also delete the "Comdlg32.ocx" entry in the selfreg table. "
I will now get the systemowner to test the packages...
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