Skip to content

Commit

Permalink
Updated WiX installer:
Browse files Browse the repository at this point in the history
- Use FeatureTree GUI - users can select which parts should be installed.
- Configured for MSVC10 builds
- Use WiX 3.6
  • Loading branch information
PKEuS committed Nov 3, 2012
1 parent 01f929a commit fbb63df
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 39 deletions.
8 changes: 4 additions & 4 deletions win_installer/config.wxi
Expand Up @@ -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>
37 changes: 22 additions & 15 deletions win_installer/cppcheck.wixproj
@@ -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>
55 changes: 41 additions & 14 deletions win_installer/cppcheck.wxs
Expand Up @@ -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>
Expand All @@ -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' />
Expand All @@ -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' >
Expand All @@ -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='cppcheckcore.dll' />
<ComponentRef Id='RegistryEntries' />
<ComponentRef Id='BaseDocs' />
<ComponentRef Id='InnoSetupCleanup' />
</Feature>
<Feature Id='CLI' Title='Command line interface' AllowAdvertise='no' Description='Command line tool' Level='1'>
<ComponentRef Id='cppcheck.exe' /> <ComponentRef Id='cppcheck.exe' />
</Feature>
<Feature Id='GUI' Title='Graphical interface' AllowAdvertise='no' Description='GUI for cppcheck' Level='1'>
<ComponentRef Id='RegistryEntries' /> <ComponentRef Id='RegistryEntries' />
<ComponentRef Id='GuiExecutable' /> <ComponentRef Id='GuiExecutable' />
<ComponentRef Id='GuiTranslations' /> <Feature Id='Translations' Title='GUI Translations' AllowAdvertise='no' Description='Translations for cppcheck GUI' Level='1'>
<ComponentRef Id='GuiTranslations' />
</Feature>
<ComponentRef Id='BaseDocs' /> <ComponentRef Id='BaseDocs' />
<ComponentRef Id='ProgramMenuDir' /> <ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='InnoSetupCleanup' />
</Feature> </Feature>
<!-- <Feature Id="CRT" AllowAdvertise="no" Display="hidden" Level="1" Title="Microsoft Visual C++ 2010 Runtime Components ">
<Feature Id="CRT" AllowAdvertise="no" Display="hidden" Level="1" Title="Microsoft Visual C++ 2008 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' />


Expand Down
4 changes: 2 additions & 2 deletions win_installer/productInfo.wxi
Expand Up @@ -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" ?>
Expand Down
9 changes: 5 additions & 4 deletions win_installer/readme.txt
Expand Up @@ -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
----------- -----------
Expand All @@ -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):
Expand Down

0 comments on commit fbb63df

Please sign in to comment.