Browse Source

wix project to create msi installer for windows

Fixes #1706.
v0.7.4-release
Tomasz Janczuk 13 years ago
committed by Ryan Dahl
parent
commit
6fadbec797
  1. 1
      .gitignore
  2. BIN
      tools/msi/LICENSE.rtf
  3. 9
      tools/msi/getnodeversion.py
  4. 20
      tools/msi/nodemsi.sln
  5. 46
      tools/msi/nodemsi.wixproj
  6. 53
      tools/msi/product.wxs
  7. 16
      vcbuild.bat

1
.gitignore

@ -18,6 +18,7 @@ node_g
Debug/ Debug/
Release/ Release/
*.sln *.sln
!nodemsi.sln
*.suo *.suo
*.vcproj *.vcproj
*.vcxproj *.vcxproj

BIN
tools/msi/LICENSE.rtf

Binary file not shown.

9
tools/msi/getnodeversion.py

@ -0,0 +1,9 @@
import sys,re;
for line in sys.stdin:
if re.match('#define NODE_MAJOR_VERSION', line):
major = line.split()[2]
if re.match('#define NODE_MINOR_VERSION', line):
minor = line.split()[2]
if re.match('#define NODE_PATCH_VERSION', line):
patch = line.split()[2]
print '{0:s}.{1:s}.{2:s}.0'.format(major, minor, patch)

20
tools/msi/nodemsi.sln

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "nodemsi", "nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x86.ActiveCfg = Debug|x86
{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x86.Build.0 = Debug|x86
{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x86.ActiveCfg = Release|x86
{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

46
tools/msi/nodemsi.wixproj

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.5</ProductVersion>
<ProjectGuid>{1d808ff0-b5a9-4be9-859d-b334b6f48be2}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>node</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<NodeVersion Condition=" '$(NodeVersion)' == '' ">0.0.0.0</NodeVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\..\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug;ProductVersion=$(NodeVersion)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\..\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug;ProductVersion=$(NodeVersion)</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Compile Include="product.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="LICENSE.rtf" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUIExtension">
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

53
tools/msi/product.wxs

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define sourcedir="$(var.ProjectDir)..\..\$(var.Configuration)\" ?>
<Product Id="cc6c176e-e26c-48ec-8970-f58bd1d046cf"
Name="node.js"
Language="1033"
Version="$(var.ProductVersion)"
Manufacturer="Joyent, Inc"
UpgradeCode="1d60944c-b9ce-4a71-a7c0-0384eb884baa">
<Package InstallerVersion="200" Compressed="yes" Platform="x86" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="NodeRoot" Name="nodejs">
<Component Id="nodeexe" Guid="AEC0F08E-89B3-4C35-A286-8DB8598597F2">
<File Id="filenodeexe" KeyPath="yes" Source="$(var.sourcedir)\node.exe" />
</Component>
<?if $(var.Configuration) = Debug ?>
<Component Id="nodepdb" Guid="BEC0F08E-89B3-4C35-A286-8DB8598597F2">
<File Id="filenodepdb" KeyPath="yes" Source="$(var.sourcedir)\node.pdb" />
</Component>
<?endif?>
<Component Id="license" Guid="CEC0F08E-89B3-4C35-A286-8DB8598597F2">
<File Id="filelicense" KeyPath="yes" Source="$(var.sourcedir)\..\LICENSE" />
</Component>
</Directory>
</Directory>
</Directory>
<ComponentGroup Id="allfiles">
<ComponentRef Id="nodeexe"/>
<?if $(var.Configuration) = Debug ?>
<ComponentRef Id="nodepdb"/>
<?endif?>
<ComponentRef Id="license"/>
</ComponentGroup>
<Feature Id="nodejs" Title="node.js engine" Level="1" Description="evented I/O for V8 javascript">
<ComponentGroupRef Id="allfiles" />
<ComponentGroupRef Id="Product.Generated" />
</Feature>
<WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\license.rtf" />
<UIRef Id="WixUI_Minimal" />
</Product>
</Wix>

16
vcbuild.bat

@ -18,6 +18,7 @@ set noprojgen=
set nobuild= set nobuild=
set test= set test=
set test_args= set test_args=
set msi=
:next-arg :next-arg
if "%1"=="" goto args-done if "%1"=="" goto args-done
@ -33,6 +34,7 @@ if /i "%1"=="test-simple" set test=test-simple&goto arg-ok
if /i "%1"=="test-message" set test=test-message&goto arg-ok if /i "%1"=="test-message" set test=test-message&goto arg-ok
if /i "%1"=="test-all" set test=test-all&goto arg-ok if /i "%1"=="test-all" set test=test-all&goto arg-ok
if /i "%1"=="test" set test=test&goto arg-ok if /i "%1"=="test" set test=test&goto arg-ok
if /i "%1"=="msi" set msi=1&goto arg-ok
:arg-ok :arg-ok
shift shift
goto next-arg goto next-arg
@ -51,7 +53,7 @@ echo Project files generated.
:msbuild :msbuild
@rem Skip project generation if requested. @rem Skip project generation if requested.
if defined nobuild goto run if defined nobuild goto msi
@rem Bail out early if not running in VS build env. @rem Bail out early if not running in VS build env.
if defined VCINSTALLDIR goto msbuild-found if defined VCINSTALLDIR goto msbuild-found
@ -70,6 +72,15 @@ goto run
msbuild node.sln /t:%target% /p:Configuration=%config% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo msbuild node.sln /t:%target% /p:Configuration=%config% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
if errorlevel 1 goto exit if errorlevel 1 goto exit
:msi
@rem Skip msi generation if not requested
if not defined msi goto run
python "%~dp0tools\msi\getnodeversion.py" < "%~dp0src\node_version.h" > "%temp%\node_version.txt"
if not errorlevel 0 echo Cannot determine current version of node.js & goto exit
for /F "tokens=*" %%i in (%temp%\node_version.txt) do set NODE_VERSION=%%i
msbuild "%~dp0tools\msi\nodemsi.sln" /t:Clean,Build /p:Configuration=%config% /p:NodeVersion=%NODE_VERSION% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
if errorlevel 1 goto exit
:run :run
@rem Run tests if requested. @rem Run tests if requested.
if "%test%"=="" goto exit if "%test%"=="" goto exit
@ -94,9 +105,10 @@ echo Failed to create vc project files.
goto exit goto exit
:help :help
echo vcbuild.bat [debug/release] [test-all/test-uv/test-internet/test-pummel/test-simple/test-message] [clean] [noprojgen] [nobuild] echo vcbuild.bat [debug/release] [msi] [test-all/test-uv/test-internet/test-pummel/test-simple/test-message] [clean] [noprojgen] [nobuild]
echo Examples: echo Examples:
echo vcbuild.bat : builds debug build echo vcbuild.bat : builds debug build
echo vcbuild.bat release msi : builds release build and MSI installer package
echo vcbuild.bat test : builds debug build and runs tests echo vcbuild.bat test : builds debug build and runs tests
echo vcbuild.bat release test-uv: builds release build and runs --libuv tests echo vcbuild.bat release test-uv: builds release build and runs --libuv tests
goto exit goto exit

Loading…
Cancel
Save