I can offer some help. For the command line you append your PROPERTYNAME
followed by an equal sign and then the value you want to assign to that
property. Like this.

msiexec /L*v c:\log.txt /i my.msi PROPERTYNAME1=value1
PROPERTYNAME2=value2

In my experience it seemed like if you gave it all "required" properties
that correspond to your UI then it breezes through without a hitch. But,
if you forget a property it either starts popping up dialog boxes for
you to fill in or some other behavior, I can't remember which. I'm not
sure if you only give it one or two properties that it's going to know
what to do for the remainder.

A command line that works for my installer is 623 characters long, but
it can install in a test environment where all properties are known
quantities without any dialogs showing. Really helps with automation.

-----Original Message-----
From: Kevin Burton [mailto:kev...@buyseasons.com] 
Sent: Wednesday, February 23, 2011 7:08 AM
To: General discussion for Windows Installer XML toolset.
Subject: [WiX-users] Command line installation?

I would like to know what strategies are best to use if I optionally
don't want a UI. Right now I have a custom dialog that appears and it
sets a number of properties. If any of these properties are set on the
command line I would like to skip the dialog. That is one question. The
second question is how do I set the properties on the command line?

If it helps the dialog is defined as

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>
        <Fragment>
    <UI>
      <Property Id="FULLYQUALIFIEDCOMPUTERNAME"
Hidden="yes">devbrain03</Property>
      <Property Id="SERVICEUSER" Hidden="yes">user</Property>
      <Property Id="SERVICEPASSWORD" Hidden="yes">testing</Property>
      <Property Id="SQLSERVER" Hidden="yes">computer</Property>
      <Property Id="TRANSACTIONSSQLSERVER"
Hidden="yes">computer</Property>
      <Property Id="REPLICATEDTRANSACTIONSERVER"
Hidden="yes">computer</Property>
      <Property Id="INVENTORYSERVER" Hidden="yes">computer</Property>
      <Property Id="SHIPPINGSERVER" Hidden="yes">computer</Property>
      <Property Id="COMMERCESERVERSITENAME" Hidden="yes">site</Property>
      <Property Id="SMTPSERVERNAME"
Hidden="yes">mail.company.com</Property>
      <Property Id="LYRISSQLSERVER" Hidden="yes">server</Property>
      <Property Id="LYRISUSER" Hidden="yes">user</Property>
      <Property Id="LYRISPASSWORD" Hidden="yes">testing</Property>
      <Property Id="CYBERSOURCEURL" Hidden="yes">https://myco.ic3.com/
</Property>
      <Dialog Id="PropertiesDlg" Width="290" Height="390"
Title="[ProductName] [ProductVersion] $(var.Configuration)"
NoMinimize="yes">
        <Control Id="Title" Type="Text" X="15" Y="6" Width="200"
Height="15" Transparent="yes" NoPrefix="yes" Text="Ready to Install" />
        <Control Id="ComputerNameLabel" Type="Text" X="15" Y="26"
Width="80" Height="15" Transparent="yes" NoPrefix="yes" Text="Computer
Name" />
        <Control Id="ComputerNameEdit" Type="Edit" X="114" Y="22"
Width="150" Height="18" Property="FULLYQUALIFIEDCOMPUTERNAME" />
        <Control Id="UserLabel" Type="Text" X="15" Y="46" Width="80"
Height="15" Transparent="yes" NoPrefix="yes" Text="User" />
        <Control Id="UserEdit" Type="Edit" X="114" Y="42" Width="150"
Height="18" Property="SERVICEUSER" />
        <Control Id="PasswordLabel" Type="Text" X="15" Y="66" Width="80"
Height="15" Transparent="yes" NoPrefix="yes" Text="Password" />
        <Control Id="PasswordEdit" Type="Edit" X="114" Y="62"
Width="150" Height="18" Property="SERVICEPASSWORD" Password="yes" />
        <Control Id="SqlServerLabel" Type="Text" X="15" Y="86"
Width="100" Height="15" Transparent="yes" NoPrefix="yes"
Text="BuySeasons Sql Server" />
        <Control Id="SqlServerEdit" Type="Edit" X="114" Y="82"
Width="150" Height="18" Property="SQLSERVER" />
        <Control Id="TransactionsSqlServerLabel" Type="Text" X="15"
Y="106" Width="100" Height="15" Transparent="yes" NoPrefix="yes"
Text="Transactions Sql Server" />
        <Control Id="TransactionsSqlServerEdit" Type="Edit" X="114"
Y="102" Width="150" Height="18" Property="TRANSACTIONSSQLSERVER" />
        <Control Id="ShippingSqlServerLabel" Type="Text" X="15" Y="126"
Width="100" Height="15" Transparent="yes" NoPrefix="yes" Text="Shipping
Sql Server" />
        <Control Id="ShippingSqlServerEdit" Type="Edit" X="114" Y="122"
Width="150" Height="18" Property="SHIPPINGSERVER" />
        <Control Id="ReplicatedTransactionsSqlServerLabel" Type="Text"
X="15" Y="146" Width="100" Height="15" Transparent="yes" NoPrefix="yes"
Text="Replicated Sql Server" />
        <Control Id="ReplicatedTransactionsSqlServerEdit" Type="Edit"
X="114" Y="142" Width="150" Height="18"
Property="REPLICATEDTRANSACTIONSERVER" />
        <Control Id="InventoryServerLabel" Type="Text" X="15" Y="166"
Width="100" Height="15" Transparent="yes" NoPrefix="yes" Text="Inventory
Server" />
        <Control Id="InventoryServerEdit" Type="Edit" X="114" Y="162"
Width="150" Height="18" Property="INVENTORYSERVER" />
        <Control Id="LyrisDatabaseSqlServerLabel" Type="Text" X="15"
Y="186" Width="100" Height="15" Transparent="yes" NoPrefix="yes"
Text="Lyris Sql Server" />
        <Control Id="LyrisDatabaseSqlServerEdit" Type="Edit" X="114"
Y="182" Width="150" Height="18" Property="LYRISSQLSERVER" />
        <Control Id="LyrisDatabaseUserLabel" Type="Text" X="15" Y="206"
Width="100" Height="15" Transparent="yes" NoPrefix="yes" Text="Lyris
User Name" />
        <Control Id="LyrisDatabaseUserEdit" Type="Edit" X="114" Y="202"
Width="150" Height="18" Property="LYRISUSER" />
        <Control Id="LyrisDatabasePasswordLabel" Type="Text" X="15"
Y="226" Width="100" Height="15" Transparent="yes" NoPrefix="yes"
Text="Lyris Password" />
        <Control Id="LyrisDatabasePasswordEdit" Type="Edit" X="114"
Y="222" Width="150" Height="18" Property="LYRISPASSWORD" Password="yes"
/>
        <Control Id="SiteNameLabel" Type="Text" X="15" Y="286"
Width="80" Height="15" Transparent="yes" NoPrefix="yes" Text="Site Name"
/>
        <Control Id="SiteNameEdit" Type="Edit" X="114" Y="282"
Width="150" Height="18" Property="COMMERCESERVERSITENAME" />
        <Control Id="SmtpServerNameLabel" Type="Text" X="15" Y="306"
Width="80" Height="15" Transparent="yes" NoPrefix="yes" Text="SMTP
Server" />
        <Control Id="SmtpServerNameEdit" Type="Edit" X="114" Y="302"
Width="150" Height="18" Property="SMTPSERVERNAME" />
        <Control Id="CyberSourceURLLabel" Type="Text" X="15" Y="326"
Width="80" Height="15" Transparent="yes" NoPrefix="yes"
Text="CyberSource URL" />
        <Control Id="CyberSourceURLEdit" Type="Edit" X="114" Y="322"
Width="150" Height="18" Property="CYBERSOURCEURL" />
        <Control Id="OK" Type="PushButton" X="104" Y="352" Width="56"
Height="17" Default="yes" Text="OK">
          <Publish Event="EndDialog"
        
Value="Return"/>
        </Control>
        <Control Id="Cancel" Type="PushButton" X="164" Y="352"
Width="56" Height="17" Cancel="yes" Text="Cancel">
          <Publish Event="EndDialog"
        
Value="Exit"/>
        </Control>
      </Dialog>
      <AdminUISequence />
      <InstallUISequence />
    </UI>
  </Fragment>
</Wix>

Kevin Burton
Senior Software Engineer
BUYSEASONS
262-901-2000 Office
262-901-2312 Fax
kev...@buyseasons.com 

-----Original Message-----
From: Rob Mensching [mailto:r...@robmensching.com] 
Sent: Wednesday, February 16, 2011 9:40 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Conditionally invoking ServiceInstall Element

I don't think more disk space should be consumed if things are cabbed
and the service executable is identical in the two Components (one
Conditioned, the other not) because only one will ever get installed on
the machine (due to mutually exclusive Conditions) and smart-cabbing
should make sure only one file is in the cabinet.

(wow, that's one sentence <smile/>).
On Mon, Feb 14, 2011 at 8:50 AM, Christopher Painter <
chr...@deploymentengineering.com> wrote:

> Technically it's a violation of the component rules.   However, if you
can
> make
> sure that the two components ( whether they be in two merge modules or

> no merge modules ) have mutually exclusive component conditions so 
> that only one will
> ever be installed you can pretty much get away with it.   You will
still
> get
> validation errors as part of the build though I believe.  I've done 
> this in the past  and my main complaint about it is it doesn't scale 
> well.
>
>
> If dev doesn't want to redo the app,  what would be the effect of 
> taking consoleappservice.exe and copying / renaming it to have two
files:
>
> consoleapp.exe
> service.exe
>
> It's a confusing hack and you'll eat up more disk space then if you 
> factored it
> out into the shared.dll   but you should be able to still do
everything I
> mentioned previously.   If this is .NET code it might not be happy but
you
> could
> give it a try.
>
> Personally if it is a .NET service, I can't imagine it taking more 
> then a few hours to factor out, build and test.
>
> ---
> Christopher Painter, Author of Deployment Engineering Blog Have a hot 
> tip, know a secret or read a really good thread that deserves 
> attention? E-Mail Me
>
>
>
> ----- Original Message ----
> From: Gregg Swanson <gregg.swan...@microsoft.com>
> To: General discussion for Windows Installer XML toolset.
> <wix-users@lists.sourceforge.net>
> Sent: Mon, February 14, 2011 10:38:26 AM
> Subject: Re: [WiX-users] Conditionally invoking ServiceInstall Element
>
> Thanks for the help...
>
> I am a WIX rooky.
>
> Is this is a valid option -
>
> Package the consleappservice.exe in two separate merge modules, the 
> first doesn't invoke ServiceInstall the second does invoke
ServiceInstall?
>
> The application that I am helping will have to refactor code and they 
> may be reluctant to do so at this point in time.
>
> Thanks,
> Gregg
>
>
> -----Original Message-----
> From: Christopher Painter [mailto:chr...@deploymentengineering.com]
> Sent: Monday, February 14, 2011 10:14 AM
> To: General discussion for Windows Installer XML toolset.
> Subject: Re: [WiX-users] Conditionally invoking ServiceInstall Element
>
> The ServiceControl element is a child of the Component which is a 
> child of the Feature element so the condition can be applied at the 
> Feature or Component level.  If the component is installed the service

> will be installed and there's no way around that except to factor your

> service out of the console app:
>
> consleappservice.exe ->  consoleapp.exe, service.exe, shared.dll
>
> Then you can put have Feature A reference  the consoleapp.exe and 
> shared.dll components and Feature B referene service.exe and 
> shared.dll components.  (
> Note: There is only 1 shared.dll component )
>
> If feature B is installed you will get a service.  If feature B is not

> installed you will not get a service but you can still have your 
> console app if feature A is installed.
>
> >From a SysAdmin's point of view it's silent installs can be:
>
> msiexec /i foo.msi ADDLOCAL=A  /qn   or
> msiexec /i foo.msi ADDLOCAL=A,B /qn
>
> If the service was not previously installed and now desired they can 
> issue the
> command:
>
> msiexec /i foo.msi ADDLOCAL=B /qn
>
> If the service was previously installed and no longer desired they can

> issue the command
>
> msiexec /i foo.msi REMOVE=B /qn
>
> If they want to uninstall all together they can say:
>
> msiexec /x foo.msi  /qn  or
> msiexec /i foo.msi REMOVE=ALL /qn
>
>
> ---
> Christopher Painter, Author of Deployment Engineering Blog Have a hot 
> tip, know a secret or read a really good thread that deserves 
> attention? E-Mail Me
>
>
>
> ----- Original Message ----
> From: Gregg Swanson <gregg.swan...@microsoft.com>
> To: "wix-users@lists.sourceforge.net" 
> <wix-users@lists.sourceforge.net>
> Sent: Mon, February 14, 2011 9:48:47 AM
> Subject: [WiX-users] Conditionally invoking ServiceInstall Element
>
> Hello,
>
> I have a Console application that may also be used as a Windows 
> Service. Is it possible to conditionally invoke or not invoke the 
> ServiceInstall element to control when the service is installed?
>
>
> Thanks,
> Gregg
>
>
------------------------------------------------------------------------
------
> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
XE:
> Pinpoint memory and threading errors before they happen.
> Find and fix more than 250 security defects in the development cycle.
> Locate bottlenecks in serial and parallel code that limit performance.
> http://p.sf.net/sfu/intel-dev2devfeb
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
>
>
>
>
------------------------------------------------------------------------
------
> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
XE:
> Pinpoint memory and threading errors before they happen.
> Find and fix more than 250 security defects in the development cycle.
> Locate bottlenecks in serial and parallel code that limit performance.
> http://p.sf.net/sfu/intel-dev2devfeb
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
>
------------------------------------------------------------------------
------
> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
XE:
> Pinpoint memory and threading errors before they happen.
> Find and fix more than 250 security defects in the development cycle.
> Locate bottlenecks in serial and parallel code that limit performance.
> http://p.sf.net/sfu/intel-dev2devfeb
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
>
>
>
>
------------------------------------------------------------------------
------
> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
XE:
> Pinpoint memory and threading errors before they happen.
> Find and fix more than 250 security defects in the development cycle.
> Locate bottlenecks in serial and parallel code that limit performance.
> http://p.sf.net/sfu/intel-dev2devfeb
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>


-- 
virtually, Rob Mensching - http://RobMensching.com LLC
------------------------------------------------------------------------
------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio
XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------
------
Free Software Download: Index, Search & Analyze Logs and other IT data
in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT
data 
generated by your applications, servers and devices whether physical,
virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to