Skip to content

Commit

Permalink
Introduce the use of wix_use_fragment
Browse files Browse the repository at this point in the history
By setting this Package variable, the class can use
Fragment instead of Module in the App class recipes.
  • Loading branch information
Stephane Cerveau committed Jan 16, 2018
1 parent a5d9de6 commit c60fc23
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
1 change: 1 addition & 0 deletions cerbero/packages/package.py
Expand Up @@ -129,6 +129,7 @@ class PackageBase(object):
rpm_conflicts = ''
rpm_obsoletes = ''
rpm_provides = ''
wix_use_fragment = False

def __init__(self, config, store):
if self.sys_deps is None:
Expand Down
9 changes: 5 additions & 4 deletions cerbero/packages/wix.py
Expand Up @@ -467,10 +467,11 @@ def _add_application_merge_module(self):
Id=self._format_id(self.package.name + '_app'),
Title=self.package.title, Level='1', Display="expand",
AllowAdvertise="no", ConfigurableDirectory="INSTALLDIR")

self._add_merge_module(self.package, True, True, [])

etree.SubElement(self.installdir, 'Merge',
if self.package.wix_use_fragment:
etree.SubElement(self.main_feature, 'ComponentGroupRef',Id=self._package_id(self.package.name))
else:
self._add_merge_module(self.package, True, True, [])
etree.SubElement(self.installdir, 'Merge',
Id=self._package_id(self.package.name), Language='1033',
SourceFile=self.packages_deps[self.package], DiskId='1')

Expand Down
42 changes: 29 additions & 13 deletions cerbero/packages/wix_packager.py
Expand Up @@ -28,7 +28,7 @@
from cerbero.utils import messages as m
from cerbero.utils import shell, to_winepath, get_wix_prefix, etree
from cerbero.tools import strip
from cerbero.packages.wix import MergeModule, VSMergeModule, MSI, WixConfig, Burn
from cerbero.packages.wix import MergeModule, VSMergeModule, MSI, WixConfig, Burn, Fragment
from cerbero.packages.wix import VSTemplatePackage
from cerbero.config import Platform

Expand Down Expand Up @@ -80,14 +80,22 @@ def create_merge_module(self, output_dir, package_type, force, version,
for p in self.package.strip_dirs:
s.strip_dir(os.path.join(tmpdir, p))

package_name = self._package_name(version)

mergemodule = MergeModule(self.config, files_list, self.package)
if self.package.wix_use_fragment:
mergemodule = Fragment(self.config, files_list, self.package)
sources = [os.path.join(output_dir, "%s-fragment.wxs" % package_name)]
else:
mergemodule = MergeModule(self.config, files_list, self.package)
sources = [os.path.join(output_dir, "%s.wxs" % package_name)]
if tmpdir:
mergemodule.prefix = tmpdir
package_name = self._package_name(version)
sources = [os.path.join(output_dir, "%s.wxs" % package_name)]

mergemodule.write(sources[0])
wixobjs = [os.path.join(output_dir, "%s.wixobj" % package_name)]
if self.package.wix_use_fragment:
wixobjs = [os.path.join(output_dir, "%s-fragment.wixobj" % package_name)]
else:
wixobjs = [os.path.join(output_dir, "%s.wixobj" % package_name)]

for x in ['utils']:
wixobjs.append(os.path.join(output_dir, "%s.wixobj" % x))
Expand All @@ -103,18 +111,22 @@ def create_merge_module(self, output_dir, package_type, force, version,

candle = Candle(self.wix_prefix, self._with_wine)
candle.compile(' '.join(final_sources), output_dir)
light = Light(self.wix_prefix, self._with_wine)
path = light.compile(final_wixobjs, package_name, output_dir, True)
if self.package.wix_use_fragment:
path = wixobjs[0]
else:
light = Light(self.wix_prefix, self._with_wine)
path = light.compile(wixobjs, package_name, output_dir, True)

# Clean up
if not keep_temp:
os.remove(sources[0])
for f in wixobjs:
os.remove(f)
try:
os.remove(f.replace('.wixobj', '.wixpdb'))
except:
pass
if not self.package.wix_use_fragment:
for f in wixobjs:
os.remove(f)
try:
os.remove(f.replace('.wixobj', '.wixpdb'))
except:
pass
if tmpdir:
shutil.rmtree(tmpdir)

Expand Down Expand Up @@ -223,6 +235,10 @@ def _create_msi(self, config_path):

wixobjs = [os.path.join(self.output_dir, "%s.wixobj" %
self._package_name())]

if self.package.wix_use_fragment:
wixobjs.append(os.path.join(self.output_dir, "%s-fragment.wixobj" %
self._package_name()))
for x in ['utils']:
wixobjs.append(os.path.join(self.output_dir, "%s.wixobj" % x))
sources.append(os.path.join(os.path.abspath(self.config.data_dir),
Expand Down

0 comments on commit c60fc23

Please sign in to comment.