Create bundle with GStreamer and Servo installers

This commit is contained in:
Fernando Jiménez Moreno 2018-09-03 11:31:34 +02:00
parent 049eb6887e
commit c3ed1d11c0
3 changed files with 51 additions and 1 deletions

View file

@ -18,6 +18,7 @@ import shutil
import subprocess
import sys
import tempfile
import urllib
from mach.decorators import (
CommandArgument,
@ -330,7 +331,7 @@ class PackageCommands(CommandBase):
import mako.template
template_path = path.join(dir_to_root, "support", "windows", "Servo.wxs.mako")
template = mako.template.Template(open(template_path).read())
wxs_path = path.join(dir_to_msi, "Servo.wxs")
wxs_path = path.join(dir_to_msi, "Installer.wxs")
open(wxs_path, "w").write(template.render(
exe_path=target_dir,
dir_to_temp=dir_to_temp_servo,
@ -351,6 +352,35 @@ class PackageCommands(CommandBase):
except subprocess.CalledProcessError as e:
print("WiX light exited with return value %d" % e.returncode)
return e.returncode
print("Packaged Servo into " + path.join(dir_to_msi, "Installer.msi"))
# Download GStreamer installer. Only once.
dir_to_gst_deps = path.join(dir_to_msi, 'Gstreamer.msi');
gstreamer_msi_path = path.join(target_dir, 'Gstreamer.msi');
if os.path.exists(gstreamer_msi_path):
shutil.copy(gstreamer_msi_path, dir_to_gst_deps)
else:
print('Fetching GStreamer installer. This may take a while...')
urllib.urlretrieve('https://gstreamer.freedesktop.org/data/pkg/windows/1.14.2/gstreamer-1.0-x86-1.14.2.msi', gstreamer_msi_path)
# Generate bundle with GStreamer and Servo installers.
print("Creating bundle")
shutil.copy(path.join(dir_to_root, 'support', 'windows', 'Servo.wxs'), dir_to_msi)
bundle_wxs_path = path.join(dir_to_msi, 'Servo.wxs')
dir_to_bundle_msi = path.join(dir_to_msi, 'Servo.msi')
try:
with cd(dir_to_msi):
subprocess.check_call(['candle', bundle_wxs_path, '-ext', 'WixBalExtension'])
except subprocess.CalledProcessError as e:
print("WiX candle exited with return value %d" % e.returncode)
return e.returncode
try:
wxsobj_path = "{}.wixobj".format(path.splitext(bundle_wxs_path)[0])
with cd(dir_to_msi):
subprocess.check_call(['light', wxsobj_path, '-ext', 'WixBalExtension'])
except subprocess.CalledProcessError as e:
print("WiX light exited with return value %d" % e.returncode)
return e.returncode
print("Packaged Servo into " + path.join(dir_to_msi, "Servo.msi"))
print("Creating ZIP")

19
support/windows/Servo.wxs Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="Servo"
Version="1.0"
UpgradeCode="91b09c7e-6c0d-4166-b806-1dc724acf728">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage
SourceFile="Gstreamer.msi"
DisplayName="GStreamer"
ForcePerMachine="yes"/>
<MsiPackage
SourceFile="Installer.msi"
Compressed="yes"
DisplayName="Servo"
ForcePerMachine="yes"/>
</Chain>
</Bundle>
</Wix>

View file

@ -40,6 +40,7 @@
Advertise="yes"/>
</File>
${include_dependencies()}
<Environment Id="PATH" Name="PATH" Value="C:\gstreamer\1.0\x86\bin;C:\gstreamer\1.0\x86_64\bin" Permanent="yes" Part="last" Action="set" System="yes" />
</Component>
${include_directory(resources_path, "resources")}