Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Installing multiple instance

198 views
Skip to first unread message

Dan

unread,
Jan 14, 2005, 5:28:50 PM1/14/05
to
Hi,
Did anybody tried the Multiple Instance installation
I am using Win XP SP 1
Window Installer 3.0
I have a product
1. I created copy of this product
2. I modify ProductCode property Property table guid (change one number there).
3 I modify ProductName in the Property table
4 Created InstanceID in Property table set it to 1
5.Generate transform file from the copy and

msiexec /i mypackage.msi TRANSFORMS=instance.mst MSINEWINSTANCE=1
And It didn't work.
Could somebody help me please.
Thanks.

Phil Wilson

unread,
Jan 15, 2005, 6:19:55 PM1/15/05
to
You need to change the package code too, in the summary information stream.
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280

"Dan" <lora...@yahoo.com> wrote in message
news:9909aa96.05011...@posting.google.com...

Dan

unread,
Jan 17, 2005, 11:29:27 AM1/17/05
to
I am sorry,
But could you please give more information.
What is summary information stream.
I saw your book but there is nothing about Installing multiple instance .
Do you know where I could find more information?
Thanks.
D.

Phil Wilson

unread,
Jan 18, 2005, 11:23:31 AM1/18/05
to
Depends what tool you're using to create/modify the MSI file, but if you're
using Orca, use View, Summary Information and change the package code to a
new Guid.
All of this assumes that your problem is that it's telling you that the
product is already installed, although you didn't explicitly say that in
your first post.

--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280

"Dan" <lora...@yahoo.com> wrote in message
news:9909aa96.05011...@posting.google.com...

lora...@yahoo.com

unread,
Jan 18, 2005, 1:56:52 PM1/18/05
to
Hi Phil,
thank you again for you help.
I am using Orca
I am new with Installing multiple instance.
Let me tell you again please what I am trying to do over here.
the MSDN documentation is terrible.
I want to install product A as msi , and product B as .mst file an
clean machine
I have Product A.
I made copy of Product A
Called it B.
Modify in the property table:
Product name to B.
Set new GUID in product B in the ProductCode code.
Set property MSINEWINSTANCE to1.
Then create mst file from A and B product and called it test.mst
Then run.
msiexec /i A.msi TRANSFORMS=test.mst MSINEWINSTANCE=1
in the middle of the installation a error messagebox saying that I
have missing file in the B product.
>From your question I think I don't understand how it suppose to work.
As far as I understand from you the Installing multiple instance can be
done only when one product is already installed.
In my case it is product A.
Ether way I just want to know what are the stesp to create the mst file
and what modify in product A and B using Orca
Thank you again

Phil Wilson

unread,
Jan 19, 2005, 4:38:22 PM1/19/05
to
Ok, I need to do some research on MSINEWINSTANCE and that MSDN link.
--
Phil Wilson [MVP Windows Installer]
----
<lora...@yahoo.com> wrote in message
news:1106074612.9...@z14g2000cwz.googlegroups.com...

Dan

unread,
Jan 20, 2005, 8:14:45 AM1/20/05
to

Ashmann

unread,
Jan 20, 2005, 4:08:37 PM1/20/05
to
I need to write an Installer for SQL Server, i.e. installing a
component or bundle for each every SQL Server instance on a machine.
Since multiple instances of SQL Server can be installed on a single
machine, I would need to have multiple instance of my application on
the same machine, and would have to have multiple Add/Remove items.

I have been using Visual C++ to circumvent this before, but now MSI is
a requirement. I'm using WfWI6.0, and have created Transforms as
discussed above. So, in WfWI I create Instance Transforms (.mst) and
execute them as said above, namely

msiexec /i mypackage.msi TRANSFORMS=instance.mst MSINEWINSTANCE=1

But I had to create this physically. I cannot live with this option.
There should be a way to create Instance Transforms dynamically and
apply them.

Questions,
(1) Big Question - HOW DO I DO IT ?
(2) How can I fix the Add/Remove item to reflect the SQL Server
instance for which the application was installed?
for example: (Add/remove items would be)
XXX YYY (SQL Server Instance 1)
XXX YYY (SQL Server Instance 2)
XXX YYY (SQL Server Instance 3)

Dan

unread,
Jan 24, 2005, 10:47:45 AM1/24/05
to
Hi Phil,
I am sorry but did you find out something.
Thanks D.

Dan

unread,
Jan 28, 2005, 12:19:25 PM1/28/05
to
Did anybody try to use Installing multiple instance?

Carolyn Napier [MSFT]

unread,
Feb 1, 2005, 2:30:42 PM2/1/05
to
For installing multiple instances of a product through instance transforms,
changing the package code is unnecessary. The scenario using instance
transforms relies upon a single installation package and then X instance
transforms. Each instance transforms alters the ProductCode and generally sets
an InstanceId value. This InstanceId value is used in the authoring of the
original package to truly isolate the instances (so that files are installed to
their own directory and registry keys are separated on instance boundaries).

If however, you are installing multiple instances using multiple packages, then
Phil is correct. You'll need to change the package code as well.

- Carolyn Napier
Microsoft Windows Installer Team

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Please do not send email directly to this alias. This alias is for newsgroup
purposes only.

MSI FAQ:
<http://www.microsoft.com/windows2000/community/centers/management/msi_faq.mspx>


"Phil Wilson" <pdjw...@nospam.cox.net> wrote in message
news:euYzCh1%23EHA...@TK2MSFTNGP15.phx.gbl...

Carolyn Napier [MSFT]

unread,
Feb 1, 2005, 2:39:46 PM2/1/05
to
It's probably easier to start with getting multiple instances to work with
packages. Then you can transition to using instance transforms. Usually when
multiple instance is discussed, it refers to true isolation of each instance. No
files are shared and no registry entries are shared. In the common example, SQL
Server uses multiple instances for installation. For example, the MSDE desktop
engine used multiple instance: X MSI packages to support X instances. To
accomplish this, it required proper componentization so that the instances
themselves were isolated. Files were installed to their own instance
subdirectory and registry keys were installed to their own specific instance
location. That's why the last two bullets of the documentation discuss proper
componentization for the files and registry keys.

Creating an instance transform is fairly simple. Start with the original
package MSI file and then make a copy of it. Open the copy up in your favorite
editor (i.e. Orca) and then change the ProductCode and the ProductName. The
InstanceId is not a real property. It's whatever you're using in your registry
key/folders to isolate the instances. Of course, for all non-file data the
components should have different GUIDs (per the component rules). Save the copy.

The MSINEWINSTANCE property should not be set in the transform. The property is
set on the command line.

Then create a transform between the two: msitran -g original.msi copy.msi
instance1.mst

You can then install both instances:

msiexec /i package.msi /qb
msiexec /i package.msi TRANSFORMS=instance1.mst MSINEWINSTANCE=1 /qb

If you're having issues with the scenario, in particular with the instance
transform command line, then generate a verbose log file. If you're having
trouble figuring out what's wrong from the log file, then provide the details to
the newsgroup...

Hope this helps,


- Carolyn Napier
Microsoft Windows Installer Team


--
This posting is provided "AS IS" with no warranties, and confers no rights.
Please do not send email directly to this alias. This alias is for newsgroup
purposes only.

MSI FAQ:
<http://www.microsoft.com/windows2000/community/centers/management/msi_faq.mspx>


<lora...@yahoo.com> wrote in message
news:1106074612.9...@z14g2000cwz.googlegroups.com...

Carolyn Napier [MSFT]

unread,
Feb 1, 2005, 2:48:48 PM2/1/05
to
(1) It's possible to create Instance Transforms dynamically using programmatic
access to the MSI API. For example, you can generate a transform using
MsiDatabaseGenerateTransform. You can edit an installation package (the one
that you want transformed) using the MSI API (MsiOpenDatabase,
MsiDatabaseOpenView, MsiViewExecute, MsiViewFetch, MsiViewModify,
MsiDatabaseCommit). Additionally, you can generate a GUID on the fly as well
(required for the new ProductCode) using the OLE32 API -- CoCreateGuid. All of
the API are documented on MSDN.

As for installation, the MSI API has programmatic access for that as well via
MsiInstallProduct and the documentation on multiple instance w/ instance
transforms gives an example.

(2) The display name in ARP comes from the ProductName property in the Property
table. You could always use a type 51 custom action to set the ProductName
property to a formatted value specification (XXX YYY [SQLINSTANCE]) where you
specify either on the command line or some other method the value of the
SQLINSTANCE property prior to the type 51 custom action execution.

Hope this helps,
- Carolyn Napier
Microsoft Windows Installer Team


--
This posting is provided "AS IS" with no warranties, and confers no rights.
Please do not send email directly to this alias. This alias is for newsgroup
purposes only.

MSI FAQ:
<http://www.microsoft.com/windows2000/community/centers/management/msi_faq.mspx>


"Ashmann" <a2p...@hotmail.com> wrote in message
news:1106255316.9...@z14g2000cwz.googlegroups.com...

Dan

unread,
Feb 9, 2005, 12:25:12 PM2/9/05
to
Hello Carolyn,
Thank you for the information.
My problem was that I didn't put the mst file in the same folder where
my msi file and all my files.
Anyway you information was very helpful for me.
Thank you,
Dan.
0 new messages