Hi All!

This is my first post on AppDeploy and I am fairly new to MSI development.

The question I have is that is there a way to make the MSI so that it can only be installed using TRANSFORMS switch?

In other words, if MSI is double clicked then it should generate an error but when run using msiexec /i some.msi TRANSFORM=someTransform.mst then it should install

thanks
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
I dont think so.
You would have to use a wrapper with the command line for the msi and mst.
Answered 07/01/2008 by: reds4eva
Second Degree Blue Belt

Please log in to comment
0
you could do a couple of things..

have a look at secure custom transforms in the sdk. It allows you to embed the Transform within the MSI. Then you could potentially hard code the transform property.

you could try a launch condition of TRANSFORMS

a CA which enums the value of TRANSFORMS and runs a type 19 CA if not found.

Im sure its possible i have never tried it tho.
Answered 07/01/2008 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
0
ORIGINAL: jmcfadyen
you could try a launch condition of TRANSFORMS
a CA which enums the value of TRANSFORMS and runs a type 19 CA if not found.



Except, most likely the reason you have a transform is that it is a vendor MSI, and the first rule of Fight club is dont edit the vendor MSI.
Answered 07/01/2008 by: reds4eva
Second Degree Blue Belt

Please log in to comment
0
reds4eva is right...... Editing the vendor msi hamper the functionality of the application.
Answered 07/01/2008 by: prashanth
Orange Belt

Please log in to comment
0
We all know about the rules, how to bend them and break them [;)]

However I don't see anywhere that Johni refer to a vendor MSI. This could be a general question too as the OP is "fairly new to MSI development". This could also be an in-house MSI with transforms for different subsidiary, sites or simething else.

Embedding a transform into the _Storage table shouldn't break any future updates from the vendor, nor would a correct conditioned CA.

Johni,

Don't forgett the "S" at the end (TRANSFORMS) even for a single transform.
Answered 07/02/2008 by: AngelD
Red Belt

Please log in to comment
0
ORIGINAL: prashanth
reds4eva is right...... Editing the vendor msi hamper the functionality of the application.
Nonsense. It *might* but it's not an absolute truth. If you know what you're doing, there's no problem. The general consensus, though, is that editing vendor MSIs is A Bad Thing and to always use transforms.
Answered 07/02/2008 by: VBScab
Red Belt

Please log in to comment
0
Thanks guys for providing such valuable info, I really appreciate it.
Actually it is a vendor MSI (and I should have mentioned it in my initial thread...apologize for that).
So what I got from this thread is:
  • If it is a vendor MSI then don't modify it
  • If it is not then there is a way (as mentioned by jmcfadyen)

Thanks again
Answered 07/02/2008 by: Johni
Senior Yellow Belt

Please log in to comment
0
I never said you cant do it, just you shouldnt if at all possible. Occasionaly you have no choice but to edit the msi, and if your going to do that, then listen to Mr McFadyen's, Angel and vbscabs advice.
But, in this case, I wouldnt do it just for the sake of embedding an MST. There are other ways to stop people running MSI's.
Answered 07/02/2008 by: reds4eva
Second Degree Blue Belt

Please log in to comment
0
Answered 07/08/2008 by: reds4eva
Second Degree Blue Belt

Please log in to comment
0
Just stumbled across this post. You could put an entry in your main MSI, in the LaunchCondition table like this:

Condition
TRANSFORMPRESENT="true"
Description
Sorry, you need to use a transform.

and then in your transform, add a property called 'TRANSFORMPRESENT' and give it a value of 'true' (Use whatever property name you want, it doesn't have to be TRANSFORMPRESENT).

It doesn't specifically provide the exact logic that you required, but could be a way of 'fudging' the same sort of behaviour you're after. It works because the LaunchCondition evaluation cannot find the property until the transform is applied.
Answered 07/09/2008 by: captain_planet
Second Degree Brown Belt

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