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" ?>
<?endif ?>
<?define CliBuildDir = "..\cli\release" ?>
<?define GuiBuildDir = "..\Build\gui" ?>
<?define CliBuildDir = "..\bin" ?>
<?define GuiBuildDir = "..\bin" ?>
<?define TranslationsDir = "..\gui" ?>
<?define HelpDir = "..\gui\help" ?>
<?define QtDllDir = "..\..\runtimes" ?>
<?define CrtMergeModule = "$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC90_CRT_x86.msm" ?>
<?define QtDllDir = "..\bin" ?>
<?define CrtMergeModule = "$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm" ?>
</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>
<DefineSolutionProperties>false</DefineSolutionProperties>
<WixToolPath Condition="'$(WixToolPath)' == ''">$(PROGRAMFILES)\Windows Installer XML v3.5\bin\</WixToolPath>
<WixToolPath Condition="'$(WixToolPath)' == ''">$(PROGRAMFILES)\WiX Toolset v3.6\bin\</WixToolPath>
<WixTargetsPath Condition="'$(WixTargetsPath)' == ''">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputName Condition=" '$(ProductVersion)' != '' ">cppcheck-$(ProductVersion)-$(Platform)-Setup</OutputName>
<OutputPath>..\Build\</OutputPath>
<IntermediateOutputPath>..\BuildTmp\Wix\$(Platform)\</IntermediateOutputPath>
<OutputName>cppcheck-$(ProductVersion)-$(Platform)-Setup</OutputName>
<OutputPath>Build\</OutputPath>
<IntermediateOutputPath>BuildTmp\Wix\$(Platform)\</IntermediateOutputPath>
<OutputType>package</OutputType>
<ProjectGuid>{3b772885-4980-4a76-8407-4dabf8f7757c}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<WixExtension Include="$(WixToolPath)WixUIExtension.dll" />
<Compile Include="cppcheck.wxs"/>
<WixExtension Include="WixUIExtension">
<HintPath>C:\Programme\WiX Toolset v3.6\bin\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
<Compile Include="cppcheck.wxs" />
</ItemGroup>
<Import Project="$(WixTargetsPath)"/>
<Target Name="All" DependsOnTargets="Clean;Validate;Build"/>
<ItemGroup>
<Content Include="config.wxi" />
<Content Include="productInfo.wxi" />
<Content Include="readme.txt" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<Target Name="All" DependsOnTargets="Clean;Validate;Build" />
<Target Name="Clean">
<RemoveDir Directories="..\buildtmp\wix" />
<RemoveDir Directories="BuildTmp\Wix" />
</Target>
<Target Name="Validate">
<Exec Command="..\cli\release\cppcheck --rule=. --version"/>
<Exec Command="..\bin\cppcheck --rule=. --version" />
</Target>
</Project>

View File

@ -2,19 +2,24 @@
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?include productInfo.wxi ?>
<?include config.wxi ?>
<Product Name='$(var.ProductName)' Id='*' UpgradeCode='$(var.ProductUpgradeCode)'
Language='1033' Codepage='1252' Version='$(var.ProductVersion)' Manufacturer='$(var.ProductManufacturer)'>
<Package Id='*' Keywords='Installer' Description="$(var.ProductName) Setup"
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' />
<Property Id='DiskPrompt' Value='Cppcheck installation [1]' />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='SystemFolder' FileSource='SystemFolder' />
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<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)'>
<File Id='cppcheck.exe' Name='cppcheck.exe' DiskId='1' Source='$(var.CliBuildDir)\cppcheck.exe' KeyPath='yes' />
</Component>
@ -29,18 +34,15 @@
<Shortcut Id='startmenuGui' Directory="ProgramMenuDir" Name='$(var.ProductNameShort)'
WorkingDirectory='INSTALLDIR' Icon="cppcheckgui.exe" IconIndex="0" Advertise="yes" />
</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='qtgui4dll' Name='qtgui4.dll' Source='$(var.QtDllDir)\qtgui4.dll' />
<File Id='qtxml4dll' Name='qtxml4.dll' Source='$(var.QtDllDir)\qtxml4.dll' />
</Component>
<Component Id='GuiTranslations' Guid='$(var.guiTranslationsGUID)'>
<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_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_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_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' />
@ -64,17 +66,22 @@
<RemoveFile Id="msvcp90.dll" On="install" Name="msvcp90.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='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="cppcheck_se.qm" On="install" Name="cppcheck_se.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="qtclucene4dll" On="install" Name="qtclucene4.dll" />
<RemoveFile Id="qthelp4dll" On="install" Name="qthelp4.dll" />
<RemoveFile Id="qtnetwork4dll" On="install" Name="qtnetwork4.dll" />
<RemoveFile Id="qtsql4dll" On="install" Name="qtsql4.dll" />
<RemoveFile Id='qtxml4dll' On='install' Name='qtxml4.dll' />
</Component>
</Directory>
<!-- <Merge Id="CRT" Language="0" SourceFile="$(var.CrtMergeModule)" DiskId="1" /> -->
<Merge Id="CRT" Language="0" SourceFile="$(var.CrtMergeModule)" DiskId="1" />
</Directory>
<Directory Id='ProgramMenuFolder' Name='Programs' >
@ -88,27 +95,47 @@
</Directory>
<Feature Id='Complete' Title='$(var.ProductName)' Description='The complete package.'
Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR' >
<Feature Id='MainProgram' Title='Command line interface' Description='Command line tool' Level='1'>
<ComponentRef Id='cppcheck.exe' />
Display='expand' Level='1' AllowAdvertise='no' ConfigurableDirectory='INSTALLDIR' >
<Feature Id='CppcheckCore' Display='hidden' AllowAdvertise='no' Title='Cppcheck-Core' Description='Cppcheck core components' Level='1'>
<ComponentRef Id='cppcheckcore.dll' />
<ComponentRef Id='RegistryEntries' />
<ComponentRef Id='GuiExecutable' />
<ComponentRef Id='GuiTranslations' />
<ComponentRef Id='BaseDocs' />
<ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='InnoSetupCleanup' />
</Feature>
<!--
<Feature Id="CRT" AllowAdvertise="no" Display="hidden" Level="1" Title="Microsoft Visual C++ 2008 Runtime Components ">
<Feature Id='CLI' Title='Command line interface' AllowAdvertise='no' Description='Command line tool' Level='1'>
<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"/>
</Feature>
-->
</Feature>
<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" />
<UIRef Id="WixUI_InstallDir"/>
<UIRef Id="WixUI_FeatureTree"/>
<Icon Id='cppcheckgui.exe' SourceFile='$(var.GuiBuildDir)\cppcheck-gui.exe' />

View File

@ -2,14 +2,14 @@
<Include>
<?define ProductName = "Cppcheck 1.57.dev" ?>
<?define ProductNameShort = "Cppcheck" ?>
<?define ProductVersion = "1.57.dev" ?>
<?define ProductVersion = "1.56.99" ?>
<?define ProductManufacturer = "The Cppcheck team" ?>
<?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 cppcheckGUID = "1c31dd76-07fa-4420-b9b5-5463742d6a48" ?>
<?define cppcheckcoreGUID = "1c31dd76-07fa-4420-b9b5-5463742d6a49" ?>
<?define guiGUID = "D7D3FF8E-1D82-4215-B59B-4715A748C540" ?>
<?define guiTranslationsGUID = "24738151-890D-4fcc-824C-DA7FF63E0D7F" ?>
<?define basedocsGUID = "9F62B23C-CD2B-4826-A567-6AB6F75A2AEA" ?>

View File

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