2011-09-15 05:51:49 +08:00
<?xml version="1.0" encoding="UTF-8"?>
2012-06-03 03:49:31 +08:00
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
2015-01-11 13:49:45 +08:00
<?define ProductName = "io.js" ?>
<?define ProductDescription = "io.js" ?>
<?define ProductAuthor = "io.js contributors" ?>
2011-09-15 05:51:49 +08:00
2015-01-11 13:49:45 +08:00
<?define RegistryKeyPath = "SOFTWARE\io.js" ?>
2013-03-07 18:37:07 +08:00
2012-06-05 03:39:23 +08:00
<?define RepoDir="$(var.ProjectDir)..\..\..\" ?>
<?define SourceDir="$(var.RepoDir)\$(var.Configuration)\" ?>
2011-09-15 05:51:49 +08:00
2012-06-03 00:36:20 +08:00
<Product Id="*"
2012-06-03 03:49:31 +08:00
Name="$(var.ProductName)"
2011-09-15 05:51:49 +08:00
Language="1033"
Version="$(var.ProductVersion)"
2012-06-03 03:49:31 +08:00
Manufacturer="$(var.ProductAuthor)"
2015-01-15 07:41:26 +08:00
UpgradeCode="47c07a3a-42ef-4213-a85d-8f5a59077c28">
2011-09-15 05:51:49 +08:00
2013-03-08 01:25:06 +08:00
<Package InstallerVersion="200" Compressed="yes"/>
2011-09-15 05:51:49 +08:00
2013-03-08 01:25:06 +08:00
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
2011-12-09 07:00:48 +08:00
2012-06-05 03:39:23 +08:00
<MajorUpgrade AllowSameVersionUpgrades="yes"
2015-01-11 13:49:45 +08:00
DowngradeErrorMessage="A later version of io.js is already installed. Setup will now exit."/>
2012-06-05 03:39:23 +08:00
2015-01-14 10:21:20 +08:00
<Icon Id="NodeIcon" SourceFile="$(var.RepoDir)\src\res\iojs.ico"/>
2013-03-08 01:25:06 +08:00
<Property Id="ARPPRODUCTICON" Value="NodeIcon"/>
2015-01-11 13:49:45 +08:00
<Property Id="ApplicationFolderName" Value="iojs"/>
2013-03-08 01:25:06 +08:00
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>
2013-01-30 12:37:57 +08:00
<Property Id="INSTALLDIR">
2013-03-07 18:37:07 +08:00
<RegistrySearch Id="InstallPathRegistry"
Type="raw"
Root="HKCU"
Key="$(var.RegistryKeyPath)"
Name="InstallPath"/>
2013-01-30 12:37:57 +08:00
</Property>
2012-06-22 21:11:38 +08:00
2013-03-08 00:48:43 +08:00
<Feature Id="NodeRuntime"
Level="1"
2015-01-11 13:49:45 +08:00
Title="io.js runtime"
Description="Install the core io.js runtime (iojs.exe)."
2013-03-08 00:48:43 +08:00
Absent="disallow">
<ComponentRef Id="NodeExecutable"/>
<ComponentRef Id="NodeVarsScript"/>
<ComponentRef Id="NodeStartMenuAndRegistryEntries"/>
2015-01-13 06:06:06 +08:00
<ComponentRef Id="AppData" />
2013-03-08 00:48:43 +08:00
<ComponentGroupRef Id="Product.Generated"/>
2013-03-07 21:08:38 +08:00
2015-01-14 08:11:51 +08:00
<Feature Id="NodeAlias"
Level="1"
Title="Alias node to iojs"
Description="Create node.exe as an alias for iojs.exe.">
<ComponentRef Id="NodeAlias"/>
</Feature>
2013-03-07 21:08:38 +08:00
<Feature Id="NodePerfCtrSupport"
Level="1"
Title="Performance counters"
2015-01-11 13:49:45 +08:00
Description="Installs support for io.js-specific performance counters.">
2013-03-07 21:08:38 +08:00
<ComponentRef Id="NodePerfCtrSupport"/>
</Feature>
<Feature Id="NodeEtwSupport"
Level="1"
Title="Event tracing (ETW)"
2015-01-11 13:49:45 +08:00
Description="Installs support for event tracing (ETW) events generated by io.js.">
2013-03-07 21:08:38 +08:00
<ComponentRef Id="NodeEtwSupport"/>
</Feature>
2013-02-28 22:29:00 +08:00
</Feature>
2013-03-07 18:55:47 +08:00
<Feature Id="npm"
Level="1"
2013-03-10 01:22:00 +08:00
Title="npm package manager"
2015-01-11 13:49:45 +08:00
Description="Install npm, the recommended package manager for io.js.">
2013-03-07 18:55:47 +08:00
<ComponentRef Id="NpmCmdScript"/>
<ComponentRef Id="NpmBashScript"/>
<ComponentRef Id="NpmConfigurationFile"/>
2015-01-13 06:06:06 +08:00
<ComponentRef Id="AppData" />
2013-03-07 18:55:47 +08:00
<ComponentGroupRef Id="NpmSourceFiles"/>
</Feature>
2013-03-08 01:01:57 +08:00
<Feature Level="1"
Id="DocumentationShortcuts"
Title="Online documentation shortcuts"
2015-01-11 13:49:45 +08:00
Description="Add start menu entries that link the the online documentation for io.js $(var.ProductVersion) and the io.js website.">
2013-03-08 01:01:57 +08:00
<ComponentRef Id="DocumentationShortcuts"/>
2013-02-28 22:29:00 +08:00
</Feature>
2013-03-07 21:44:46 +08:00
<Feature Id="EnvironmentPath"
Level="1"
Title="Add to PATH"
2015-01-11 13:49:45 +08:00
Description="Add io.js, npm, and modules that were globally installed by npm to the PATH environment variable.">
2013-03-07 21:44:46 +08:00
<Feature Id="EnvironmentPathNode"
Level="1"
2015-01-11 13:49:45 +08:00
Title="io.js and npm"
Description="Add io.js and npm (if installed) to the PATH environment variable.">
2013-03-07 21:44:46 +08:00
<ComponentRef Id="EnvironmentPathNode"/>
</Feature>
<Feature Id="EnvironmentPathNpmModules"
Level="1"
2013-03-10 01:22:00 +08:00
Title="npm modules"
Description="Add modules that are installed globally by npm to the PATH environment variable. This option works for the current user only; other users need to update their PATH manually.">
2013-03-07 21:44:46 +08:00
<ComponentRef Id="EnvironmentPathNpmModules"/>
</Feature>
</Feature>
2012-06-03 03:49:31 +08:00
2013-03-07 21:44:46 +08:00
<Directory Id="TARGETDIR" Name="SourceDir">
2012-06-03 03:49:31 +08:00
<Directory Id="ProgramMenuFolder">
2015-01-11 13:49:45 +08:00
<Directory Id="ApplicationProgramsFolder" Name="io.js"/>
2012-06-03 03:49:31 +08:00
</Directory>
2012-06-01 10:44:10 +08:00
<Directory Id="$(var.ProgramFilesFolderId)">
2015-01-11 13:49:45 +08:00
<Directory Id="INSTALLDIR" Name="iojs">
2011-09-15 05:51:49 +08:00
</Directory>
</Directory>
</Directory>
2013-03-07 21:08:38 +08:00
<DirectoryRef Id="INSTALLDIR">
2013-03-08 00:48:43 +08:00
<Component Id="NodeExecutable">
2015-01-08 23:17:52 +08:00
<File Id="iojs.exe" KeyPath="yes" Source="$(var.SourceDir)\iojs.exe"/>
2013-03-08 00:48:43 +08:00
</Component>
2015-01-14 08:11:51 +08:00
<Component Id="NodeAlias" Guid="fde09cce-a503-4409-a3c4-61ae2a5a5906">
<!-- Always remove node.exe. The hard link will be recreated by the
`LinkNodeExeToIojsExe` custom action whenever needed. -->
<RemoveFile Id="node.exe" Name="node.exe" On="both" />
</Component>
2013-03-08 00:48:43 +08:00
<Component Id="NodeVarsScript">
<File Id="nodevars.bat" KeyPath="yes" Source="$(var.RepoDir)\tools\msvs\nodevars.bat"/>
</Component>
2013-03-07 21:08:38 +08:00
<?if $(var.NoPerfCtr) != 1 ?>
<Component Id="NodePerfCtrSupport">
<File Id="node_perfctr_provider_man" Name="node_perfctr_provider.man" Source="$(var.RepoDir)\src\res\node_perfctr_provider.man">
<util:PerfCounterManifest ResourceFileDirectory="[INSTALLDIR]"/>
</File>
</Component>
<?endif?>
<?if $(var.NoETW) != 1 ?>
<Component Id="NodeEtwSupport">
<File Id="node_etw_provider.man" Source="$(var.RepoDir)\src\res\node_etw_provider.man">
2015-01-08 23:17:52 +08:00
<util:EventManifest MessageFile="[INSTALLDIR]iojs.exe" ResourceFile="[INSTALLDIR]iojs.exe"/>
2013-03-07 21:08:38 +08:00
</File>
</Component>
<?endif?>
</DirectoryRef>
2013-03-08 00:48:43 +08:00
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="NodeStartMenuAndRegistryEntries">
<RegistryValue Root="HKCU"
Key="$(var.RegistryKeyPath)"
Name="InstallPath"
Type="string"
Value="[INSTALLDIR]"
KeyPath="yes"/>
<RegistryValue Root="HKCU"
Key="$(var.RegistryKeyPath)"
Name="Version"
Type="string"
Value="$(var.ProductVersion)"/>
<Shortcut Id="NodeVarsScriptShortcut"
2015-01-11 13:49:45 +08:00
Name="io.js command prompt"
2013-03-08 00:48:43 +08:00
Target="[%ComSpec]"
Arguments='/k "[INSTALLDIR]nodevars.bat"'
Show="normal"
WorkingDirectory="INSTALLDIR"/>
<Shortcut Id="NodeExecutableShortcut"
2015-01-11 13:49:45 +08:00
Name="io.js"
2015-01-08 23:17:52 +08:00
Target="[INSTALLDIR]iojs.exe"
2013-03-08 00:48:43 +08:00
WorkingDirectory="INSTALLDIR"/>
<Shortcut Id="UninstallProduct"
2015-01-11 13:49:45 +08:00
Name="Uninstall io.js"
2013-03-08 00:48:43 +08:00
Target="[SystemFolder]msiexec.exe"
Arguments="/x [ProductCode]"/>
<RemoveFolder Id="RemoveApplicationProgramsFolder"
On="uninstall"/>
</Component>
</DirectoryRef>
2013-03-07 18:55:47 +08:00
<DirectoryRef Id="INSTALLDIR">
<Component Id="NpmCmdScript">
<File Id="npm.cmd" KeyPath="yes" Source="$(var.NpmSourceDir)\bin\npm.cmd"/>
</Component>
<Component Id="NpmBashScript">
<File Id="npm.sh" KeyPath="yes" Source="$(var.NpmSourceDir)\bin\npm"/>
</Component>
<Directory Id="NodeModulesFolder" Name="node_modules">
<Directory Id="NpmFolder" Name="npm">
<Component Id="NpmConfigurationFile">
<File Id="npm.rc" KeyPath="yes" Source="$(var.RepoDir)\tools\msvs\npm\npmrc"/>
</Component>
</Directory>
</Directory>
2015-01-13 06:06:06 +08:00
<Directory Id="AppDataFolder">
<Directory Id="AppDataDir" Name="npm">
<Component Id="AppData" Guid="D3B35D0E-D0F9-4D11-A773-D4608E90E1D1">
<CreateFolder />
<RemoveFolder Id="AppDataDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="$(var.RegistryKeyPath)\Components" Type="string" Value="" />
</Component>
</Directory>
</Directory>
2013-03-07 18:55:47 +08:00
</DirectoryRef>
2013-03-08 01:01:57 +08:00
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="DocumentationShortcuts">
<RegistryValue Root="HKCU"
Key="$(var.RegistryKeyPath)\Components"
Name="DocumentationShortcuts"
Type="integer"
Value="1"
KeyPath="yes"/>
<util:InternetShortcut Id="WebsiteShortcut"
2015-01-11 13:49:45 +08:00
Name="io.js website"
Target="http://iojs.org"
2013-03-08 01:01:57 +08:00
Type="url"/>
<util:InternetShortcut Id="DocsShortcut"
2015-01-11 13:49:45 +08:00
Name="io.js documentation"
2015-01-14 11:43:21 +08:00
Target="https://iojs.org/dist/v$(var.ProductVersion)/doc/api/"
2013-03-08 01:01:57 +08:00
Type="url"/>
</Component>
</DirectoryRef>
2013-03-07 21:44:46 +08:00
<DirectoryRef Id="INSTALLDIR">
<Component Id="EnvironmentPathNode">
<RegistryValue Root="HKLM"
Key="$(var.RegistryKeyPath)\Components"
Name="EnvironmentPathNode"
Type="integer"
Value="1"
KeyPath="yes"/>
<Environment Id="EnvironmentPathNode"
Action="set"
Name="PATH"
Part="last"
System="yes"
Value="[INSTALLDIR]"/>
</Component>
<Component Id="EnvironmentPathNpmModules">
<RegistryValue Root="HKCU"
Key="$(var.RegistryKeyPath)\Components"
Name="EnvironmentPathNpmModules"
Type="integer"
Value="1"
KeyPath="yes"/>
<Environment Id="EnvironmentPathNpmModules"
Action="set"
Name="PATH"
Part="last"
System="no"
Value="[AppDataFolder]npm"/>
</Component>
</DirectoryRef>
2015-01-14 08:11:51 +08:00
<CustomAction Id="LinkNodeExeToIojsExe"
FileKey="iojs.exe"
ExeCommand="-e " require('fs').linkSync(process.execPath, require('path').resolve(process.execPath, '../node.exe')); ""
Impersonate="no"
Execute="deferred"
Return="check" />
2015-01-27 23:01:23 +08:00
<Binary Id='BroadcastEnvironmentUpdate'
SourceFile='$(var.custom_actions.TargetDir)$(var.custom_actions.TargetName).dll' />
<CustomAction Id="BroadcastEnvironmentUpdate"
BinaryKey="BroadcastEnvironmentUpdate"
DllEntry="BroadcastEnvironmentUpdate"
Execute="immediate"
Return="check" />
2015-01-14 08:11:51 +08:00
<InstallExecuteSequence>
<Custom Action="LinkNodeExeToIojsExe" After="InstallFiles">
$NodeAlias = 3
</Custom>
2015-01-27 23:01:23 +08:00
<Custom Action='BroadcastEnvironmentUpdate' After='InstallFinalize'/>
2015-01-14 08:11:51 +08:00
</InstallExecuteSequence>
2011-11-12 04:40:47 +08:00
<UI Id="NodeInstallUI">
2013-03-08 01:25:06 +08:00
<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="FeatureTree"/>
<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="WelcomeDlg"/>
2012-04-05 00:06:33 +08:00
<DialogRef Id="LicenseAgreementDlg"/>
2013-01-30 12:37:57 +08:00
<DialogRef Id="InstallDirDlg"/>
<DialogRef Id="BrowseDlg"/>
<DialogRef Id="InvalidDirDlg"/>
2011-11-12 04:40:47 +08:00
2012-12-17 13:23:23 +08:00
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
2012-04-05 00:06:33 +08:00
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
2013-01-30 12:37:57 +08:00
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">LicenseAccepted = "1"</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg" Order="20">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="10">1</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="10">1</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="20">1</Publish>
2011-11-12 04:40:47 +08:00
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
2012-12-17 13:23:23 +08:00
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">NOT Installed OR WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
2011-11-12 04:40:47 +08:00
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">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>
2012-12-17 13:23:23 +08:00
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish>
2013-01-30 12:37:57 +08:00
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="2">NOT Installed</Publish>
2012-12-17 13:23:23 +08:00
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
2011-11-12 04:40:47 +08:00
2015-01-11 13:49:45 +08:00
<Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="io.js has been successfully installed."/>
2011-11-12 04:40:47 +08:00
</UI>
2011-09-15 05:51:49 +08:00
2013-03-08 01:25:06 +08:00
<UIRef Id="WixUI_Common"/>
<WixVariable Id="WixUIBannerBmp" Value="..\..\..\doc\thin-white-stripe.jpg"/>
<WixVariable Id="WixUIDialogBmp" Value="..\..\..\doc\full-white-stripe.jpg"/>
<WixVariable Id="WixUILicenseRtf" Value="$(var.SourceDir)\LICENSE.rtf"/>
2011-09-15 05:51:49 +08:00
</Product>
</Wix>