CLOUDSTACK-6271:[Windows] Integrating setup databases with msi installer for windows

Signed-off-by: Abhinandan Prateek <aprateek@apache.org>
This commit is contained in:
Damodar Reddy 2014-04-18 10:15:10 +05:30 committed by Abhinandan Prateek
parent 795a6e5fa0
commit 881792991e
5 changed files with 243 additions and 52 deletions

View File

@ -1,4 +1,3 @@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@ -15,7 +14,6 @@
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
package org.apache.cloudstack.wix;
import java.io.File;
@ -74,6 +72,13 @@ public class HeatMojo extends AbstractWixMojo {
*/
private File workingDirectory;
/**
*
* variable names to be passed to heat command
* @parameter expression="${componentGroup}"
*/
private String componentGroup;
/**
*
* <DirectoryName> directory reference to root directories
@ -93,7 +98,7 @@ public class HeatMojo extends AbstractWixMojo {
commandLine.addArgument("-gg");
commandLine.addArgument("-cg");
commandLine.addArgument("ClientPath");
commandLine.addArgument(componentGroup);
commandLine.addArgument("-ke");
commandLine.addArgument("-sfrag");

View File

@ -1,11 +1,11 @@
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to you under
the Apache License, Version 2.0 (the "License"); you may not use this file except
in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific language
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to you under
the Apache License, Version 2.0 (the "License"); you may not use this file except
in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@ -225,17 +225,17 @@
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-mom-inmemory</artifactId>
<version>${project.version}</version>
</dependency>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-iam</artifactId>
<version>${project.version}</version>
</dependency>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-iam</artifactId>
<version>${project.version}</version>
</dependency>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-ipc</artifactId>
@ -515,16 +515,6 @@
<exclude name="*.in"/>
</fileset>
</copy>
<copy todir="./target">
<fileset dir="../scripts/installer/windows/">
<include name="start.bat"/>
</fileset>
</copy>
<copy todir="./target/client">
<fileset dir="./target/generated-webapp">
<include name="**/*"/>
</fileset>
</copy>
</target>
</configuration>
</execution>
@ -634,7 +624,7 @@
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<!-- Copy the systemvm in the package phase as it is generated by console-proxy
<!-- Copy the systemvm in the package phase as it is generated by console-proxy
in the package phase. -->
<execution>
<id>copy-systemvm</id>
@ -667,6 +657,42 @@
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-resource-windows</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="./target">
<fileset dir="../scripts/installer/windows/">
<include name="start.bat"/>
</fileset>
</copy>
<copy todir="./target/client">
<fileset dir="./target/generated-webapp">
<include name="**/*"/>
</fileset>
</copy>
<copy todir="./target/setup">
<fileset dir="./target/utilities/scripts/db">
<include name="**/*" />
</fileset>
</copy>
<copy todir="./target/scripts">
<fileset dir="./target/utilities/bin">
<include name="**/*" />
</fileset>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
@ -690,21 +716,52 @@
<groupId>org.apache.cloudstack</groupId>
<artifactId>Wix-cloudstack-maven-plugin</artifactId>
<version>4.5.0-SNAPSHOT</version>
<configuration>
<vars>-var wix.SourceClient</vars>
<workingDirectory>${basedir}/target</workingDirectory>
<dir>client</dir>
<template>fragment</template>
<directoryName>WEBAPPS</directoryName>
<outputFile>target/client.wxs</outputFile>
</configuration>
<executions>
<execution>
<id>wix-cs</id>
<configuration>
<vars>-var wix.SourceClient</vars>
<workingDirectory>${basedir}/target</workingDirectory>
<dir>client</dir>
<template>fragment</template>
<directoryName>WEBAPPS</directoryName>
<outputFile>target/client.wxs</outputFile>
<componentGroup>ClientPath</componentGroup>
</configuration>
<goals>
<goal>heat</goal>
</goals>
</execution>
<execution>
<id>wix-cs-setup-db</id>
<configuration>
<vars>-var wix.SetupPathDir</vars>
<workingDirectory>${basedir}/target</workingDirectory>
<dir>setup</dir>
<template>fragment</template>
<directoryName>CSMANAGEMENT</directoryName>
<outputFile>target/setupdb.wxs</outputFile>
<componentGroup>SetupPath</componentGroup>
</configuration>
<goals>
<goal>heat</goal>
</goals>
</execution>
<execution>
<id>wix-cs-utilities</id>
<configuration>
<vars>-var wix.UtilitiesPathDir</vars>
<workingDirectory>${basedir}/target</workingDirectory>
<dir>scripts</dir>
<template>fragment</template>
<directoryName>INSTALLDIR</directoryName>
<outputFile>target/utilities.wxs</outputFile>
<componentGroup>UtilitiesPath</componentGroup>
</configuration>
<goals>
<goal>heat</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
@ -717,15 +774,23 @@
<extension>WixFirewallExtension</extension>
<extension>WixUIExtension</extension>
</extensions>
<arguments>-dSourceClient=SourceDir\client</arguments>
<arguments>-dSourceClient=SourceDir\client -dSetupPathDir=SourceDir\setup -dUtilitiesPathDir=SourceDir\scripts</arguments>
<sourceFiles>
<sourceFile>../scripts/installer/windows/acs.wxs</sourceFile>
<sourceFile>../scripts/installer/windows/WixInstallerDialog.wxs</sourceFile>
<sourceFile>../scripts/installer/windows/Setup_Databases.wxs</sourceFile>
<sourceFile>target/client.wxs</sourceFile>
<sourceFile>target/setupdb.wxs</sourceFile>
<sourceFile>target/utilities.wxs</sourceFile>
</sourceFiles>
<outputDirectory>target</outputDirectory>
<objectFiles>
<objectFile>target/acs.wixobj</objectFile>
<objectFile>target/client.wixobj</objectFile>
<objectFile>target/setupdb.wixobj</objectFile>
<objectFile>target/utilities.wixobj</objectFile>
<objectFile>target/WixInstallerDialog.wixobj</objectFile>
<objectFile>target/Setup_Databases.wixobj</objectFile>
</objectFiles>
<outputFile>target/acs.msi</outputFile>
</configuration>

View File

@ -0,0 +1,37 @@
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to
you under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License. -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="DatabaseInformation" Width="370" Height="270" Title="Provide Database Information">
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" />
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.WelcomeDlgBitmap)" />
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
<Control Id="BottomLine" Type="Line" X="0" Y="235" Width="370" Height="0" />
<Control Id="Description" Type="Text" X="135" Y="10" Width="220" Height="20" Transparent="yes" NoPrefix="yes" Text="Please provide the database information that host the cloud schemas" />
<Control Id="DbServerIpLabel" Type="Text" X="160" Y="38" Width="40" Height="20" TabSkip="no" Text="Host Name" Transparent="yes"/>
<Control Id="DbServerIp" Type="Edit" Height="20" Width="92" X="220" Y="33" Property="DB_HOSTNAME" />
<Control Id="DbUserNameLabel" Type="Text" X="160" Y="78" Width="40" Height="20" TabSkip="no" Text="User Name" Transparent="yes"/>
<Control Id="DbUserName" Type="Edit" Height="20" Width="92" X="220" Y="73" Property="DB_USERNAME" />
<Control Id="DbPasswordLabel" Type="Text" X="160" Y="118" Width="40" Height="20" TabSkip="no" Text="Password" Transparent="yes"/>
<Control Id="DbPassword" Type="Edit" Height="20" Width="92" X="220" Y="113" Property="DB_PASSWORD" Password="yes"/>
<Control Id="DbRootPasswordLabel" Type="Text" X="160" Y="158" Width="40" Height="20" TabSkip="no" Text="Root Password" Transparent="yes"/>
<Control Id="DbRootPassword" Type="Edit" Height="20" Width="92" X="220" Y="153" Property="DB_ROOT_PASSWORD" Password="yes"/>
<Control Id="CreateDBCheckBox" Type="CheckBox" X="160" Y="207" Width="10" Height="10" CheckBoxValue="1" Property="CREATE_DATABASE"/>
<Control Id="CreateDBCheckBoxLabel" Type="Text" X="176" Y="207" Width="340" Height="20" TabSkip="no" Text="Create Cloud Stack Database" Transparent="yes"/>
</Dialog>
</UI>
</Fragment>
</Wix>

View File

@ -0,0 +1,63 @@
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to
you under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License. -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI Id="WixUI_Mondo_Custom">
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
<Property Id="WixUI_Mode" Value="Mondo" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FatalError" />
<DialogRef Id="FilesInUse" />
<DialogRef Id="MsiRMFilesInUse" />
<DialogRef Id="PrepareDlg" />
<DialogRef Id="ProgressDlg" />
<DialogRef Id="ResumeDlg" />
<DialogRef Id="UserExit" />
<DialogRef Id="DatabaseInformation" />
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg" Order="2">LicenseAccepted = "1"</Publish>
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="DatabaseInformation">1</Publish>
<Publish Dialog="SetupTypeDlg" Control="CustomButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
<Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="DatabaseInformation">1</Publish>
<Publish Dialog="DatabaseInformation" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
<Publish Dialog="DatabaseInformation" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish>
<Publish Dialog="DatabaseInformation" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="2">NOT Installed</Publish>
<Publish Dialog="DatabaseInformation" Control="Back" Event="NewDialog" Value="DatabaseInformation" Order="3">WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="DatabaseInformation" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="DatabaseInformation"></Publish>
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="DatabaseInformation">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
</UI>
<UIRef Id="WixUI_Common" />
</Fragment>
</Wix>

View File

@ -55,6 +55,12 @@
</Property>
<Condition Message="7Z is not installed please do install 7z and then try"><![CDATA[(Installed OR SEVENZ_HOME)]]></Condition>
<!-- Properties for Database Related Information to be collected -->
<Property Id="DB_USERNAME" Value="cloud" />
<Property Id="DB_PASSWORD" Value="cloud" Hidden="yes"/>
<Property Id="DB_HOSTNAME" Value="localhost" />
<Property Id="DB_ROOT_PASSWORD" Hidden="yes"/>
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Acme' Name='Apache'>
@ -109,10 +115,12 @@
Type='expandable' Value='[TOMCATIMAGEPATH]' />
</Component>
<DirectoryRef Id="INSTALLDIR">
<Directory Id="WEBAPPS" Name="webapps">
<Component Id="webappsFolder" Guid="53c03092-438f-4da1-b14d-ceee90c79de0">
<CreateFolder />
</Component>
<Directory Id="CSMANAGEMENT" Name="cloudstack-management">
<Directory Id="WEBAPPS" Name="webapps">
<Component Id="webappsFolder" Guid="53c03092-438f-4da1-b14d-ceee90c79de0">
<CreateFolder />
</Component>
</Directory>
</Directory>
</DirectoryRef>
<DirectoryRef Id="WEBAPPS">
@ -170,14 +178,14 @@
</File>
</Component>
</DirectoryRef>
<DirectoryRef Id="INSTALLDIR">
<DirectoryRef Id="CSMANAGEMENT">
<Directory Id="CONF" Name="conf">
<Component Id="confFolder" Guid="ad227f7d-6808-4bdf-8ac6-3b2954d51b96">
<CreateFolder />
</Component>
</Directory>
</DirectoryRef>
<DirectoryRef Id="INSTALLDIR">
<DirectoryRef Id="CSMANAGEMENT">
<Directory Id="LIB" Name="lib">
<Component Id="libFolder" Guid="d338841e-2ea4-48b3-ab48-9c42e2961600">
<CreateFolder />
@ -213,44 +221,57 @@
Value="[TOMCATDIRECTORY]\bin\Tomcat6.exe">
</CustomAction>
<CustomAction Id="UpdateTomcatCatalinaBase"
ExeCommand='//US//Tomcat6 --JvmOptions=-Dcatalina.base=[INSTALLDIR];-Djava.io.tmpdir=[INSTALLDIR]\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Dcatalina.home="[TOMCATDIRECTORY]";-Xms512m;-Xmx1024m;-XX:MaxPermSize=512m'
ExeCommand='//US//Tomcat6 --JvmOptions=-Dcatalina.base=[CSMANAGEMENT];-Djava.io.tmpdir=[CSMANAGEMENT]\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Dcatalina.home="[TOMCATDIRECTORY]";-Xms512m;-Xmx1024m;-XX:MaxPermSize=512m'
Property="TOMCATDIRECTORY1" Execute="commit" Return="check" />
<CustomAction Id="UpdateTomcatClassPath"
ExeCommand='//US//Tomcat6 --Classpath="[TOMCATDIRECTORY]\bin\bootstrap.jar";"[TOMCATDIRECTORY]\bin\tomcat-juli.jar";[INSTALLDIR]\conf'
ExeCommand='//US//Tomcat6 --Classpath="[TOMCATDIRECTORY]\bin\bootstrap.jar";"[TOMCATDIRECTORY]\bin\tomcat-juli.jar";[CSMANAGEMENT]\conf;[CSMANAGEMENT]\lib;[CSMANAGEMENT]\setup'
Property="TOMCATDIRECTORY1" Execute="commit" Return="check" />
<CustomAction Id="DeleteFiles" Directory='INSTALLDIR'
ExeCommand="[SystemFolder]cmd.exe /c del [INSTALLDIR]\webapps\client\WEB-INF\classes\db.properties [INSTALLDIR]\webapps\client\WEB-INF\classes\log4j*.xml"
<CustomAction Id="DeleteFiles" Directory='CSMANAGEMENT'
ExeCommand="[SystemFolder]cmd.exe /c del [CSMANAGEMENT]\webapps\client\WEB-INF\classes\db.properties [CSMANAGEMENT]\webapps\client\WEB-INF\classes\log4j*.xml"
Execute="commit" Return="check" />
<CustomAction Id="GenerateSSLKey" Directory='INSTALLDIR'
ExeCommand="[PYTHON_HOME]\python [INSTALLDIR]\webapps\client\WEB-INF\classes\scripts\common\keys\ssl-keys.py [INSTALLDIR]\lib"
<CustomAction Id="GenerateSSLKey" Directory='CSMANAGEMENT'
ExeCommand="[PYTHON_HOME]\python [CSMANAGEMENT]\webapps\client\WEB-INF\classes\scripts\common\keys\ssl-keys.py [CSMANAGEMENT]\lib"
Execute="commit" Return="check" />
<CustomAction Id="DeployDB" Directory='CSMANAGEMENT'
ExeCommand="[PYTHON_HOME]\python [INSTALLDIR]\scripts\cloud-setup-databases [DB_USERNAME]:[DB_PASSWORD]@[DB_HOSTNAME] --deploy-as=root:[DB_ROOT_PASSWORD] -c [CSMANAGEMENT]\lib -f [CSMANAGEMENT]\setup -j [CSMANAGEMENT]\webapps\client\WEB-INF\lib\jasypt-1.9.0.jar -n [CSMANAGEMENT]\lib\key"
Execute="commit" Return="check" />
<CustomAction Id="SetupDatabases" Directory='CSMANAGEMENT'
ExeCommand="[PYTHON_HOME]\python [INSTALLDIR]\scripts\cloud-setup-databases [DB_USERNAME]:[DB_PASSWORD]@[DB_HOSTNAME] -c [CSMANAGEMENT]\lib -f [CSMANAGEMENT]\setup -j [CSMANAGEMENT]\webapps\client\WEB-INF\lib\jasypt-1.9.0.jar -n [CSMANAGEMENT]\lib\key"
Execute="commit" Return="check" />
<InstallExecuteSequence>
<InstallServices Sequence="4999"></InstallServices>
<Custom Action="TomcatPath" Before="UpdateTomcatClassPath">NOT Installed</Custom>
<Custom Action="UpdateTomcatClassPath" Before="UpdateTomcatCatalinaBase">NOT Installed</Custom>
<Custom Action="UpdateTomcatCatalinaBase" Before="DeleteFiles">NOT Installed</Custom>
<Custom Action="UpdateTomcatClassPath" Before="UpdateTomcatCatalinaBase">NOT Installed
</Custom>
<Custom Action="UpdateTomcatCatalinaBase" Before="DeleteFiles">NOT
Installed</Custom>
<Custom Action="DeleteFiles" Before="GenerateSSLKey">NOT Installed</Custom>
<Custom Action="GenerateSSLKey" Before="InstallFinalize">NOT Installed</Custom>
<Custom Action="GenerateSSLKey" Before="InstallFinalize">NOT Installed
</Custom>
<Custom Action="DeployDB" Before="InstallFinalize">(NOT Installed) AND (CREATE_DATABASE = "1")
</Custom>
<Custom Action="SetupDatabases" Before="InstallFinalize">(NOT Installed) AND (<![CDATA[CREATE_DATABASE <> "1"]]>)
</Custom>
</InstallExecuteSequence>
<UIRef Id="WixUI_Mondo" />
<Feature Id='Complete' Title='ACS' Description='The complete package.'
Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>
<Feature Id='MainProgram' Title='Program' Description='The main executable.'
Level='1'>
<ComponentRef Id='webappsFolder' />
<ComponentGroupRef Id='ClientPath' />
<ComponentGroupRef Id='SetupPath' />
<ComponentGroupRef Id='UtilitiesPath' />
<ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='confFolder' />
<ComponentRef Id='libFolder' />
<!-- ComponentRef Id='copyAllToConf' / -->
<ComponentRef Id='copyToConf' />
<ComponentRef Id='firewallRules' />
<ComponentRef Id='MainExecutable' />
<ComponentRef Id='ServiceInstaller' />
<!-- ComponentRef Id='TomcatInstalled' / -->
</Feature>
</Feature>
<UIRef Id="WixUI_Mondo_Custom" />
<UIRef Id="WixUI_ErrorProgressText" />
</Product>
</Wix>