Updated WiX installer:

- Use FeatureTree GUI - users can select which parts should be installed.
- Configured for MSVC10 builds
- Use WiX 3.6
This commit is contained in:
PKEuS 2012-11-03 22:13:01 +01:00
parent 01f929a7e2
commit fbb63dfcb4
5 changed files with 76 additions and 41 deletions

View File

@ -4,10 +4,10 @@
<?define Platform = "x86" ?> <?define Platform = "x86" ?>
<?endif ?> <?endif ?>
<?define CliBuildDir = "..\cli\release" ?> <?define CliBuildDir = "..\bin" ?>
<?define GuiBuildDir = "..\Build\gui" ?> <?define GuiBuildDir = "..\bin" ?>
<?define TranslationsDir = "..\gui" ?> <?define TranslationsDir = "..\gui" ?>
<?define HelpDir = "..\gui\help" ?> <?define HelpDir = "..\gui\help" ?>
<?define QtDllDir = "..\..\runtimes" ?> <?define QtDllDir = "..\bin" ?>
<?define CrtMergeModule = "$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC90_CRT_x86.msm" ?> <?define CrtMergeModule = "$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm" ?>
</Include> </Include>

View File

@ -1,33 +1,40 @@
<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup> <PropertyGroup>
<DefineSolutionProperties>false</DefineSolutionProperties> <DefineSolutionProperties>false</DefineSolutionProperties>
<WixToolPath Condition="'$(WixToolPath)' == ''">$(PROGRAMFILES)\WiX Toolset v3.6\bin\</WixToolPath>
<WixToolPath Condition="'$(WixToolPath)' == ''">$(PROGRAMFILES)\Windows Installer XML v3.5\bin\</WixToolPath>
<WixTargetsPath Condition="'$(WixTargetsPath)' == ''">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <WixTargetsPath Condition="'$(WixTargetsPath)' == ''">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform> <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputName Condition=" '$(ProductVersion)' != '' ">cppcheck-$(ProductVersion)-$(Platform)-Setup</OutputName> <OutputName>cppcheck-$(ProductVersion)-$(Platform)-Setup</OutputName>
<OutputPath>..\Build\</OutputPath> <OutputPath>Build\</OutputPath>
<IntermediateOutputPath>..\BuildTmp\Wix\$(Platform)\</IntermediateOutputPath> <IntermediateOutputPath>BuildTmp\Wix\$(Platform)\</IntermediateOutputPath>
<OutputType>package</OutputType> <OutputType>package</OutputType>
<ProjectGuid>{3b772885-4980-4a76-8407-4dabf8f7757c}</ProjectGuid>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<WixExtension Include="$(WixToolPath)WixUIExtension.dll" /> <WixExtension Include="WixUIExtension">
<Compile Include="cppcheck.wxs"/> <HintPath>C:\Programme\WiX Toolset v3.6\bin\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
<Compile Include="cppcheck.wxs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Import Project="$(WixTargetsPath)"/> <Content Include="config.wxi" />
<Content Include="productInfo.wxi" />
<Target Name="All" DependsOnTargets="Clean;Validate;Build"/> <Content Include="readme.txt" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<Target Name="All" DependsOnTargets="Clean;Validate;Build" />
<Target Name="Clean"> <Target Name="Clean">
<RemoveDir Directories="..\buildtmp\wix" /> <RemoveDir Directories="BuildTmp\Wix" />
</Target> </Target>
<Target Name="Validate"> <Target Name="Validate">
<Exec Command="..\cli\release\cppcheck --rule=. --version"/> <Exec Command="..\bin\cppcheck --rule=. --version" />
</Target> </Target>
</Project> </Project>

View File

@ -2,19 +2,24 @@
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?include productInfo.wxi ?> <?include productInfo.wxi ?>
<?include config.wxi ?> <?include config.wxi ?>
<Product Name='$(var.ProductName)' Id='*' UpgradeCode='$(var.ProductUpgradeCode)' <Product Name='$(var.ProductName)' Id='*' UpgradeCode='$(var.ProductUpgradeCode)'
Language='1033' Codepage='1252' Version='$(var.ProductVersion)' Manufacturer='$(var.ProductManufacturer)'> Language='1033' Codepage='1252' Version='$(var.ProductVersion)' Manufacturer='$(var.ProductManufacturer)'>
<Package Id='*' Keywords='Installer' Description="$(var.ProductName) Setup" <Package Id='*' Keywords='Installer' Description="$(var.ProductName) Setup"
Comments='$(var.ProductDescription)' Manufacturer='$(var.ProductManufacturer)' Comments='$(var.ProductDescription)' Manufacturer='$(var.ProductManufacturer)'
InstallerVersion='300' Languages='1033' Compressed='yes' SummaryCodepage='1252'/> InstallerVersion='300' Languages='1033' Compressed='yes' SummaryCodepage='1252' InstallScope='perMachine'/>
<Media Id='1' Cabinet='Cppcheck.cab' EmbedCab='yes' CompressionLevel='high' DiskPrompt='CD-ROM 1' /> <Media Id='1' Cabinet='Cppcheck.cab' EmbedCab='yes' CompressionLevel='high' DiskPrompt='CD-ROM 1' />
<Property Id='DiskPrompt' Value='Cppcheck installation [1]' /> <Property Id='DiskPrompt' Value='Cppcheck installation [1]' />
<Directory Id='TARGETDIR' Name='SourceDir'> <Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='SystemFolder' FileSource='SystemFolder' />
<Directory Id='ProgramFilesFolder' Name='PFiles'> <Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='INSTALLDIR' Name='$(var.ProductNameShort)'> <Directory Id='INSTALLDIR' Name='$(var.ProductNameShort)'>
<Component Id='cppcheckcore.dll' Guid='$(var.cppcheckcoreGUID)'>
<File Id='cppcheckcore.dll' Name='cppcheck-core.dll' DiskId='1' Source='$(var.CliBuildDir)\cppcheck-core.dll' KeyPath='yes' />
</Component>
<Component Id='cppcheck.exe' Guid='$(var.cppcheckGUID)'> <Component Id='cppcheck.exe' Guid='$(var.cppcheckGUID)'>
<File Id='cppcheck.exe' Name='cppcheck.exe' DiskId='1' Source='$(var.CliBuildDir)\cppcheck.exe' KeyPath='yes' /> <File Id='cppcheck.exe' Name='cppcheck.exe' DiskId='1' Source='$(var.CliBuildDir)\cppcheck.exe' KeyPath='yes' />
</Component> </Component>
@ -29,18 +34,15 @@
<Shortcut Id='startmenuGui' Directory="ProgramMenuDir" Name='$(var.ProductNameShort)' <Shortcut Id='startmenuGui' Directory="ProgramMenuDir" Name='$(var.ProductNameShort)'
WorkingDirectory='INSTALLDIR' Icon="cppcheckgui.exe" IconIndex="0" Advertise="yes" /> WorkingDirectory='INSTALLDIR' Icon="cppcheckgui.exe" IconIndex="0" Advertise="yes" />
</File> </File>
<File Id='libgcc_s_dw2_1_dll' Name='libgcc_s_dw2-1.dll' Source='libgcc_s_dw2-1.dll' />
<File Id='mingwm10dll' Name='mingwm10.dll' Source='mingwm10.dll' />
<File Id='libpcre0dll' Name='libpcre-0.dll' Source='libpcre-0.dll' />
<File Id='qtcore4dll' Name='qtcore4.dll' Source='$(var.QtDllDir)\qtcore4.dll' /> <File Id='qtcore4dll' Name='qtcore4.dll' Source='$(var.QtDllDir)\qtcore4.dll' />
<File Id='qtgui4dll' Name='qtgui4.dll' Source='$(var.QtDllDir)\qtgui4.dll' /> <File Id='qtgui4dll' Name='qtgui4.dll' Source='$(var.QtDllDir)\qtgui4.dll' />
<File Id='qtxml4dll' Name='qtxml4.dll' Source='$(var.QtDllDir)\qtxml4.dll' />
</Component> </Component>
<Component Id='GuiTranslations' Guid='$(var.guiTranslationsGUID)'> <Component Id='GuiTranslations' Guid='$(var.guiTranslationsGUID)'>
<File Id='cppcheck_de.qm' Name='cppcheck_de.qm' Source='$(var.TranslationsDir)\cppcheck_de.qm' /> <File Id='cppcheck_de.qm' Name='cppcheck_de.qm' Source='$(var.TranslationsDir)\cppcheck_de.qm' />
<File Id='cppcheck_es.qm' Name='cppcheck_es.qm' Source='$(var.TranslationsDir)\cppcheck_es.qm' /> <File Id='cppcheck_es.qm' Name='cppcheck_es.qm' Source='$(var.TranslationsDir)\cppcheck_es.qm' />
<File Id='cppcheck_fi.qm' Name='cppcheck_fi.qm' Source='$(var.TranslationsDir)\cppcheck_fi.qm' /> <File Id='cppcheck_fi.qm' Name='cppcheck_fi.qm' Source='$(var.TranslationsDir)\cppcheck_fi.qm' />
<File Id='cppcheck_fr.qm' Name='cppcheck_fr.qm' Source='$(var.TranslationsDir)\cppcheck_fr.qm' /> <File Id='cppcheck_fr.qm' Name='cppcheck_fr.qm' Source='$(var.TranslationsDir)\cppcheck_fr.qm' />
<File Id='cppcheck_it.qm' Name='cppcheck_it.qm' Source='$(var.TranslationsDir)\cppcheck_it.qm' />
<File Id='cppcheck_ja.qm' Name='cppcheck_ja.qm' Source='$(var.TranslationsDir)\cppcheck_ja.qm' /> <File Id='cppcheck_ja.qm' Name='cppcheck_ja.qm' Source='$(var.TranslationsDir)\cppcheck_ja.qm' />
<File Id='cppcheck_ko.qm' Name='cppcheck_ko.qm' Source='$(var.TranslationsDir)\cppcheck_ko.qm' /> <File Id='cppcheck_ko.qm' Name='cppcheck_ko.qm' Source='$(var.TranslationsDir)\cppcheck_ko.qm' />
<File Id='cppcheck_nl.qm' Name='cppcheck_nl.qm' Source='$(var.TranslationsDir)\cppcheck_nl.qm' /> <File Id='cppcheck_nl.qm' Name='cppcheck_nl.qm' Source='$(var.TranslationsDir)\cppcheck_nl.qm' />
@ -64,17 +66,22 @@
<RemoveFile Id="msvcp90.dll" On="install" Name="msvcp90.dll" /> <RemoveFile Id="msvcp90.dll" On="install" Name="msvcp90.dll" />
<RemoveFile Id="msvcr90.dll" On="install" Name="msvcr90.dll" /> <RemoveFile Id="msvcr90.dll" On="install" Name="msvcr90.dll" />
<RemoveFile Id="Microsoft.VC90.CRT.manifest" On="install" Name="Microsoft.VC90.CRT.manifest" /> <RemoveFile Id="Microsoft.VC90.CRT.manifest" On="install" Name="Microsoft.VC90.CRT.manifest" />
<RemoveFile Id='libgcc_s_dw2_1_dll' On='install' Name='libgcc_s_dw2-1.dll' />
<RemoveFile Id='mingwm10dll' On='install' Name='mingwm10.dll' />
<RemoveFile Id='libpcre0dll' On='install' Name='libpcre-0.dll' />
<RemoveFile Id="gui.exe" On="install" Name="gui.exe" /> <RemoveFile Id="gui.exe" On="install" Name="gui.exe" />
<RemoveFile Id="cppcheck_se.qm" On="install" Name="cppcheck_se.qm" /> <RemoveFile Id="cppcheck_se.qm" On="install" Name="cppcheck_se.qm" />
<RemoveFile Id="cppcheck_en.qm" On="install" Name="cppcheck_en.qm" /> <RemoveFile Id="cppcheck_en.qm" On="install" Name="cppcheck_en.qm" />
<RemoveFile Id="cppcheck_pl.qm" On="install" Name="cppcheck_pl.qm" />
<RemoveFile Id="onlinehelp.qhc" On="install" Name="onlinehelp.qhc" /> <RemoveFile Id="onlinehelp.qhc" On="install" Name="onlinehelp.qhc" />
<RemoveFile Id="qtclucene4dll" On="install" Name="qtclucene4.dll" /> <RemoveFile Id="qtclucene4dll" On="install" Name="qtclucene4.dll" />
<RemoveFile Id="qthelp4dll" On="install" Name="qthelp4.dll" /> <RemoveFile Id="qthelp4dll" On="install" Name="qthelp4.dll" />
<RemoveFile Id="qtnetwork4dll" On="install" Name="qtnetwork4.dll" /> <RemoveFile Id="qtnetwork4dll" On="install" Name="qtnetwork4.dll" />
<RemoveFile Id="qtsql4dll" On="install" Name="qtsql4.dll" /> <RemoveFile Id="qtsql4dll" On="install" Name="qtsql4.dll" />
<RemoveFile Id='qtxml4dll' On='install' Name='qtxml4.dll' />
</Component> </Component>
</Directory> </Directory>
<!-- <Merge Id="CRT" Language="0" SourceFile="$(var.CrtMergeModule)" DiskId="1" /> --> <Merge Id="CRT" Language="0" SourceFile="$(var.CrtMergeModule)" DiskId="1" />
</Directory> </Directory>
<Directory Id='ProgramMenuFolder' Name='Programs' > <Directory Id='ProgramMenuFolder' Name='Programs' >
@ -88,27 +95,47 @@
</Directory> </Directory>
<Feature Id='Complete' Title='$(var.ProductName)' Description='The complete package.' <Feature Id='Complete' Title='$(var.ProductName)' Description='The complete package.'
Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR' > Display='expand' Level='1' AllowAdvertise='no' ConfigurableDirectory='INSTALLDIR' >
<Feature Id='MainProgram' Title='Command line interface' Description='Command line tool' Level='1'> <Feature Id='CppcheckCore' Display='hidden' AllowAdvertise='no' Title='Cppcheck-Core' Description='Cppcheck core components' Level='1'>
<ComponentRef Id='cppcheck.exe' /> <ComponentRef Id='cppcheckcore.dll' />
<ComponentRef Id='RegistryEntries' /> <ComponentRef Id='RegistryEntries' />
<ComponentRef Id='GuiExecutable' />
<ComponentRef Id='GuiTranslations' />
<ComponentRef Id='BaseDocs' /> <ComponentRef Id='BaseDocs' />
<ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='InnoSetupCleanup' /> <ComponentRef Id='InnoSetupCleanup' />
</Feature> </Feature>
<!-- <Feature Id='CLI' Title='Command line interface' AllowAdvertise='no' Description='Command line tool' Level='1'>
<Feature Id="CRT" AllowAdvertise="no" Display="hidden" Level="1" Title="Microsoft Visual C++ 2008 Runtime Components "> <ComponentRef Id='cppcheck.exe' />
</Feature>
<Feature Id='GUI' Title='Graphical interface' AllowAdvertise='no' Description='GUI for cppcheck' Level='1'>
<ComponentRef Id='RegistryEntries' />
<ComponentRef Id='GuiExecutable' />
<Feature Id='Translations' Title='GUI Translations' AllowAdvertise='no' Description='Translations for cppcheck GUI' Level='1'>
<ComponentRef Id='GuiTranslations' />
</Feature>
<ComponentRef Id='BaseDocs' />
<ComponentRef Id='ProgramMenuDir' />
</Feature>
<Feature Id="CRT" AllowAdvertise="no" Display="hidden" Level="1" Title="Microsoft Visual C++ 2010 Runtime Components ">
<MergeRef Id="CRT"/> <MergeRef Id="CRT"/>
</Feature> </Feature>
-->
</Feature> </Feature>
<MajorUpgrade DowngradeErrorMessage='Downgrade is not allowed'/> <MajorUpgrade DowngradeErrorMessage='Downgrade is not allowed'/>
<!--Remove pre 1.57 versions which can't be upgraded with MajorUpgrade-->
<InstallExecuteSequence>
<Custom Action='UninstallOld152' After='InstallFinalize'>NOT Installed</Custom>
<Custom Action='UninstallOld153' After='InstallFinalize'>NOT Installed</Custom>
<Custom Action='UninstallOld154' After='InstallFinalize'>NOT Installed</Custom>
<Custom Action='UninstallOld155' After='InstallFinalize'>NOT Installed</Custom>
<Custom Action='UninstallOld156' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
<CustomAction Id='UninstallOld152' Directory='SystemFolder' ExeCommand="msiexec.exe /X {836AF028-6EE2-457C-B242-19D61701BAA3} /qn" Execute="immediate" Return="asyncNoWait"/>
<CustomAction Id='UninstallOld153' Directory='SystemFolder' ExeCommand="msiexec.exe /X {42850B7E-CD5F-449A-B6DA-C423156D2ACF} /qn" Execute="immediate" Return="asyncNoWait"/>
<CustomAction Id='UninstallOld154' Directory='SystemFolder' ExeCommand="msiexec.exe /X {7722557B-4B10-4E8F-918A-78FBAEFB09B1} /qn" Execute="immediate" Return="asyncNoWait"/>
<CustomAction Id='UninstallOld155' Directory='SystemFolder' ExeCommand="msiexec.exe /X {211B2B89-3FE0-4F49-88CC-27E283BEC010} /qn" Execute="immediate" Return="asyncNoWait"/>
<CustomAction Id='UninstallOld156' Directory='SystemFolder' ExeCommand="msiexec.exe /X {1CC8C271-A877-4DF0-B1DE-C1B7D83521BC} /qn" Execute="immediate" Return="asyncNoWait"/>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<UIRef Id="WixUI_InstallDir"/> <UIRef Id="WixUI_FeatureTree"/>
<Icon Id='cppcheckgui.exe' SourceFile='$(var.GuiBuildDir)\cppcheck-gui.exe' /> <Icon Id='cppcheckgui.exe' SourceFile='$(var.GuiBuildDir)\cppcheck-gui.exe' />

View File

@ -2,14 +2,14 @@
<Include> <Include>
<?define ProductName = "Cppcheck 1.57.dev" ?> <?define ProductName = "Cppcheck 1.57.dev" ?>
<?define ProductNameShort = "Cppcheck" ?> <?define ProductNameShort = "Cppcheck" ?>
<?define ProductVersion = "1.57.dev" ?> <?define ProductVersion = "1.56.99" ?>
<?define ProductManufacturer = "The Cppcheck team" ?> <?define ProductManufacturer = "The Cppcheck team" ?>
<?define ProductDescription = "Cppcheck is a tool for static analysis of C/C++ code" ?> <?define ProductDescription = "Cppcheck is a tool for static analysis of C/C++ code" ?>
<?define ProductGUID = "7214EC4C-8F10-4E56-8E99-0B9908E68774" ?>
<?define ProductUpgradeCode = "7E94124C-1CD1-433F-9423-4614E52300DD" ?> <?define ProductUpgradeCode = "7E94124C-1CD1-433F-9423-4614E52300DD" ?>
<?define cppcheckGUID = "1c31dd76-07fa-4420-b9b5-5463742d6a48" ?> <?define cppcheckGUID = "1c31dd76-07fa-4420-b9b5-5463742d6a48" ?>
<?define cppcheckcoreGUID = "1c31dd76-07fa-4420-b9b5-5463742d6a49" ?>
<?define guiGUID = "D7D3FF8E-1D82-4215-B59B-4715A748C540" ?> <?define guiGUID = "D7D3FF8E-1D82-4215-B59B-4715A748C540" ?>
<?define guiTranslationsGUID = "24738151-890D-4fcc-824C-DA7FF63E0D7F" ?> <?define guiTranslationsGUID = "24738151-890D-4fcc-824C-DA7FF63E0D7F" ?>
<?define basedocsGUID = "9F62B23C-CD2B-4826-A567-6AB6F75A2AEA" ?> <?define basedocsGUID = "9F62B23C-CD2B-4826-A567-6AB6F75A2AEA" ?>

View File

@ -6,8 +6,8 @@ http://wix.sourceforge.net/
You'll need: You'll need:
- latest Wix (3.6) - latest Wix (3.6)
- MSBuild (coming with Visual Studio, also with VS 2008 express) - MSBuild (coming with Visual Studio (also with Express edition))
- VS 2008 CRT merge module - VS 2010 CRT merge module
Configuring Configuring
----------- -----------
@ -24,14 +24,15 @@ Building installer
------------------ ------------------
Before building the installer make sure all the components are build: Before building the installer make sure all the components are build:
- LIB dynamic link library (cppcheck-core.dll)
- CLI executable (cppcheck.exe) - CLI executable (cppcheck.exe)
- GUI executable (cppcheck-gui.exe) - GUI executable (cppcheck-gui.exe)
- GUI translations (*.qm) - generated by the Qt's lrelease -tool - GUI translations (*.qm) - generated by the Qt's lrelease -tool
And that runtime files are available: And that runtime files are available:
- Qt runtimes: - Qt runtimes:
QtCore4.dll, QtGui4.dll and QtXml4.dll QtCore4.dll and QtGui4.dll
- MS CRT merge module (Microsoft_VC90_CRT_x86.msm) - MS CRT merge module (Microsoft_VC100_CRT_x86.msm)
Build installer by giving this command line in VS command prompt (or run Build installer by giving this command line in VS command prompt (or run
vcvars32.bat in DOS prompt first to setup environment): vcvars32.bat in DOS prompt first to setup environment):