Browse Source

windows: installer

Marek Marczykowski-Górecki 10 years ago
parent
commit
4bd14f5011
3 changed files with 343 additions and 0 deletions
  1. 18 0
      Makefile
  2. 1 0
      Makefile.builder
  3. 324 0
      installer.wxs

+ 18 - 0
Makefile

@@ -93,3 +93,21 @@ endif
 	mkdir -p $(DESTDIR)$(STATEDIR)
 	mkdir -p $(DESTDIR)$(LOGDIR)
 
+msi:
+	rm -rf destinstdir
+	mkdir -p destinstdir
+	$(MAKE) install \
+		DESTDIR=$(PWD)/destinstdir \
+		PYTHON_SITEPATH=/site-packages \
+		FILESDIR=/pfiles \
+		BINDIR=/bin \
+		DATADIR=/qubes \
+		STATEDIR=/qubes/state \
+		LOGDIR=/qubes/log
+	# icons placeholder
+	mkdir -p destinstdir/icons
+	for i in blue gray green yellow orange black purple red; do touch destinstdir/icons/$$i.png; done
+	candle -arch x64 -dversion=$(VERSION) installer.wxs
+	light -b destinstdir -o core-admin.msm installer.wixobj
+	rm -rf destinstdir
+

+ 1 - 0
Makefile.builder

@@ -2,4 +2,5 @@ ifeq ($(PACKAGE_SET),dom0)
 RPM_SPEC_FILES := $(addprefix rpm_spec/,core-dom0.spec core-dom0-doc.spec)
 WIN_SOURCE_SUBDIRS := .
 WIN_COMPILER := mingw
+WIN_PACKAGE_CMD := make msi
 endif

+ 324 - 0
installer.wxs

@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+    <Module
+        Id='coreAdmin'
+        Language='1033'
+        Codepage='1252'
+        Version='$(var.version)'>
+        <Package
+            Id='{D66EBC25-F9B5-4F31-B2D2-7FA65F02A8BB}'
+            Description='core-admin'
+            Manufacturer='Invisible Things Lab'
+            InstallerVersion='200'
+            Languages='1033'
+            SummaryCodepage='1252'/>
+        <Property Id='PYTHONDIR'>
+            <RegistrySearch Id='PythonDirRegistry' Type='raw' Root='HKLM' Key='Software\Python\PythonCode\2.7\InstallPath'/>
+        </Property>
+        <Directory Id='TARGETDIR' Name='SourceDir'>
+            <Directory Id='PYTHONDIR' Name='python27'>
+                <Directory Id='PYTHONLIBDIR' Name='lib'>
+                    <Directory Id='PYTHONSITELIBDIR' Name='site-packages'>
+                        <Directory Id='PythonSiteQubes' Name='qubes'>
+                            <Component Id="cmp0AECB7ECAB8446601286DC09AE659E58" Guid="{879EDFB8-A7C6-4D51-AA8A-64C82B9D177E}">
+                                <File Id="fil078F86DFE223177CE32F78517AD114B1" KeyPath="yes" Source="SourceDir\site-packages\qubes\guihelpers.py" />
+                            </Component>
+                            <Component Id="cmpD2047E88EE018EDF64601A8D408201EA" Guid="{4DFAC468-9B50-4859-879E-D8473B928668}">
+                                <File Id="filBDFBB228CCAFCE852609D7C4FFED7E0B" KeyPath="yes" Source="SourceDir\site-packages\qubes\guihelpers.pyc" />
+                            </Component>
+                            <Component Id="cmpF68E596DFD6EE3834C48F5FA14B328AC" Guid="{05E27BC5-DA04-4039-A5DD-29D041DA6B72}">
+                                <File Id="filA5BD2F7D5BC18642D359782A0CCB11F3" KeyPath="yes" Source="SourceDir\site-packages\qubes\guihelpers.pyo" />
+                            </Component>
+                            <Component Id="cmp0B2ECEC97D1BCC59418E3C20BE55E2D9" Guid="{F3CA4929-2215-4988-B089-26B1981869D2}">
+                                <File Id="fil4B3452497DEF50F30E89AA83D1D6E247" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubes.py" />
+                            </Component>
+                            <Component Id="cmp8F3C14EFA5DF2394DEFC9B487070AB79" Guid="{9348661B-5F1A-4828-8ED4-8E217CCA40C2}">
+                                <File Id="fil9936801760DF4082498DEF6036D27568" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubes.pyc" />
+                            </Component>
+                            <Component Id="cmp1837D149AC3976C7CADA6504707DBB72" Guid="{BF9E6169-CBA6-482D-8C52-D01AE88EEF4E}">
+                                <File Id="fil1B353678AEFB69107B4743F4F2243298" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubes.pyo" />
+                            </Component>
+                            <Component Id="cmp5865511578CF2DC2E866CE212523869D" Guid="{53FCCE2A-754F-4F97-88DC-5F9C636F29DE}">
+                                <File Id="fil592AFE5476DF01D471DF9D3E030C0336" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubesutils.py" />
+                            </Component>
+                            <Component Id="cmpD026938A550CF693A959328DBBFB625A" Guid="{9DDE79CE-6D4C-4F73-B249-849CAA12C4DC}">
+                                <File Id="fil13679797C8CFEF0A7EAF66A953039A6C" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubesutils.pyc" />
+                            </Component>
+                            <Component Id="cmpC0E66F10C510A3E73FA5ED9B60B1A2A1" Guid="{A708632C-9F71-4E14-95CA-34F332CCA5AA}">
+                                <File Id="fil1EC8AE18C6957631B65B4C83DF9362BE" KeyPath="yes" Source="SourceDir\site-packages\qubes\qubesutils.pyo" />
+                            </Component>
+                            <Component Id="cmp30E8DA588184F599D6E5E879E89754F6" Guid="{F9B59BDC-BF29-433D-8A04-48152B01A1C6}">
+                                <File Id="filC8FF1C793B8FCA94759BE6EF1005628C" KeyPath="yes" Source="SourceDir\site-packages\qubes\settings.py" />
+                            </Component>
+                            <Component Id="cmpB178A048E000BFC529C564031FF4D341" Guid="{657BF32E-D9EB-438B-BFAA-1487814E653C}">
+                                <File Id="fil265D785D0F26CE3253552EAF77547566" KeyPath="yes" Source="SourceDir\site-packages\qubes\settings.pyc" />
+                            </Component>
+                            <Component Id="cmpC23D5B9397D79825F6EE5F41AA2AB45F" Guid="{752E3E9D-EFD4-4E34-AD9E-12C3554C86E7}">
+                                <File Id="filC05B7B76CC04C6E03B155A831FBAADBB" KeyPath="yes" Source="SourceDir\site-packages\qubes\settings.pyo" />
+                            </Component>
+                            <Component Id="cmp63AF766E68DBD12350BD22DE6C66972C" Guid="{54F1F734-C156-4A1D-ACBE-C4FC61A68090}">
+                                <File Id="fil44A9063D1F504BB06C9A878841C306CC" KeyPath="yes" Source="SourceDir\site-packages\qubes\__init__.py" />
+                            </Component>
+                            <Component Id="cmp7F88186FED3358F3DEE1C7406E25730B" Guid="{718D1EBA-1987-4F48-A507-217726C04EE0}">
+                                <File Id="filDEF6172E72BCEE2BC0EED3F144154F2C" KeyPath="yes" Source="SourceDir\site-packages\qubes\__init__.pyc" />
+                            </Component>
+                            <Component Id="cmpCA0D2EA699B23FC49261677D9B39B7C2" Guid="{34C961B5-64EE-4952-94B5-4961A154BDA6}">
+                                <File Id="filC7FBFC9F08F71C21D42B91C78CC00FAC" KeyPath="yes" Source="SourceDir\site-packages\qubes\__init__.pyo" />
+                            </Component>
+                            <Directory Id="dir7D5205BCC332FED965CE5F25760F4394" Name="modules">
+                                <Component Id="cmp9CF9BACF6D9BB4E6E3D79F3B9B82A9C7" Guid="{A69F6688-2D77-41B9-B6C7-0306203FCE1A}">
+                                    <File Id="filC8451BF426E6C55F6615FA72A731D088" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\000QubesVm.py" />
+                                </Component>
+                                <Component Id="cmpE226270372D2D67AA8EE369E593A674F" Guid="{B5D28F0E-17CA-4E2D-A9F4-0E56B0CECD9C}">
+                                    <File Id="fil8254C3CFC9098D62DD5C6FC5B479D882" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\000QubesVm.pyc" />
+                                </Component>
+                                <Component Id="cmp02F793A24DD06B22341376246658FA01" Guid="{CF99CB19-6244-43DD-A09A-EE6A1681231C}">
+                                    <File Id="fil4420A26DE3EB01D52CC6611DD1067D46" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\000QubesVm.pyo" />
+                                </Component>
+                                <Component Id="cmp6A382EDDCAE0FDB6E2F9E4FC0C8C2CE2" Guid="{8A695CE4-C1E2-4D8B-A916-0B68C3BC5780}">
+                                    <File Id="fil3E289AD14BCB119EFBD09D77AAE9337E" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\003QubesTemplateVm.py" />
+                                </Component>
+                                <Component Id="cmpB122B40E2DFDE8772CB6CCEA2E2F4F82" Guid="{F8F83823-AEA6-4B8A-86D2-53F3AFB34732}">
+                                    <File Id="filBC7DCE7818A57608ECC6BC2605D4C62A" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\003QubesTemplateVm.pyc" />
+                                </Component>
+                                <Component Id="cmp2421968105608B66ABA81BB900AD45D3" Guid="{52E11E6B-9209-45A5-A0EA-07F78F7B90F4}">
+                                    <File Id="filCD08790860C26C3DD1886A4B96A995BB" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\003QubesTemplateVm.pyo" />
+                                </Component>
+                                <Component Id="cmpFE3B396A2C57211A8AE81D86D03EF530" Guid="{5F2698D5-5A5F-40DA-8BC1-B5F59C2AB7FC}">
+                                    <File Id="filB21EA173E6C550446BD80628DC9FF2CB" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\005QubesNetVm.py" />
+                                </Component>
+                                <Component Id="cmpEECF1A7991CCD676DEF0478AAA9DA779" Guid="{205287DF-474A-4A21-AA8B-7773DB58C340}">
+                                    <File Id="filFE5FECF6492DF3E6ED89B8CE074EDF75" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\005QubesNetVm.pyc" />
+                                </Component>
+                                <Component Id="cmpDF3CB345688BDC605E0C6F9A4CB31099" Guid="{2E5A9B90-44BA-481E-A39C-D19660F7E50E}">
+                                    <File Id="fil311D8A1F7A817A07B7280A5096C00FFE" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\005QubesNetVm.pyo" />
+                                </Component>
+                                <Component Id="cmp6374DCEFF66E72413B240F7591AC8E57" Guid="{06183FA3-902A-485C-B22A-FFDF95831E16}">
+                                    <File Id="filA0AEC8D90712E6812AAD317EEF4A53D7" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesDom0NetVm.py" />
+                                </Component>
+                                <Component Id="cmpB76DD46A7115498ED9AE235CAAB49C9B" Guid="{02512603-17FE-4823-BCD8-0CFB4AD35846}">
+                                    <File Id="filA0ED4C6A2FCACD8FFE66C20CE495691F" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesDom0NetVm.pyc" />
+                                </Component>
+                                <Component Id="cmp55FD5A08A96473063F9290456F312C14" Guid="{0B41C939-29B1-4117-A892-3B5DA05BE696}">
+                                    <File Id="filCDA716B6CB2316DB58EF26E99CFC7642" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesDom0NetVm.pyo" />
+                                </Component>
+                                <Component Id="cmp12D10B2AAA9863238BE50ED7B6B98B11" Guid="{79FD4624-3C4D-429A-A0CC-43B97179C045}">
+                                    <File Id="fil915A36AACDC58DF2F1382C6B1BB4CE96" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesProxyVm.py" />
+                                </Component>
+                                <Component Id="cmp2226CDC90E555F10EE39B8A6C03C41C7" Guid="{2AE027AA-2818-4437-B195-A7481C4B8892}">
+                                    <File Id="fil599A68F348915B0E78F68B4EEF142754" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesProxyVm.pyc" />
+                                </Component>
+                                <Component Id="cmpE9F9FA57B98F2F5DC9252C8A12A594B5" Guid="{B3D45266-9E8C-44C2-A038-5CF299865A47}">
+                                    <File Id="fil3301496249D5FA4D5CAC5762C704E52A" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\006QubesProxyVm.pyo" />
+                                </Component>
+                                <Component Id="cmp089CC081241F58B2EAC7EB797D587304" Guid="{C9D05ACE-D4CB-47E4-AEC5-AC5B48A94457}">
+                                    <File Id="fil95B0B4004315F8FE8E51F493126A9915" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesAppVm.py" />
+                                </Component>
+                                <Component Id="cmpAEFEF9816B6BFBB7CDB10154273B3E0E" Guid="{A88368C6-F7DC-4839-BD4E-D16C34AC5C21}">
+                                    <File Id="filD9245628CCBF6C0021B4356D9FEDB1FE" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesAppVm.pyc" />
+                                </Component>
+                                <Component Id="cmpAF74DD0F8C517C7EBD66215374A0A18C" Guid="{D0B8A13B-5124-44C8-804E-0E311C417180}">
+                                    <File Id="fil61F59683548FFF611BBA5B336D5ABD00" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesAppVm.pyo" />
+                                </Component>
+                                <Component Id="cmpBA37A571D14115C2BCFF6A02DCD4189A" Guid="{5DDB7EFF-9717-44FC-9D16-3E6191D3F6B8}">
+                                    <File Id="filFB3B2C744E7AD24B7FC652549746A37D" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesDisposableVm.py" />
+                                </Component>
+                                <Component Id="cmp1C2FC1B4F0D94A450B42E1FF682FB3F8" Guid="{72AD2FDA-770F-4473-9FC2-CBD9E8EEABBD}">
+                                    <File Id="fil507BD814754E3AE53E50061A233329C1" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesDisposableVm.pyc" />
+                                </Component>
+                                <Component Id="cmpA179C6F9E5F694D1550FED9BD8377096" Guid="{59A9E221-AE81-483E-9951-B4C590E84C78}">
+                                    <File Id="filC2F21347F263FDA8982493ED34162040" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesDisposableVm.pyo" />
+                                </Component>
+                                <Component Id="cmp527D851FE713AB04896E024BF57B6D29" Guid="{42EE7AB3-FAE4-4FC2-B825-1C254AE54FD8}">
+                                    <File Id="fil76C7E26F48DD166689767D973C446E65" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesHVm.py" />
+                                </Component>
+                                <Component Id="cmpE18D305FD0B4E484F0CA1408396EF33F" Guid="{7D36FDB2-AB3F-44AD-9038-136293FD7EFE}">
+                                    <File Id="fil0385D871E5FEA06FECBAF9B099043BE1" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesHVm.pyc" />
+                                </Component>
+                                <Component Id="cmpC5DBF238D2B8E0C64964941A164CED7B" Guid="{55E75FD5-4D52-456F-8522-5449D08BF82A}">
+                                    <File Id="fil104D02F9BBC17C9D4410C773D86770EE" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\01QubesHVm.pyo" />
+                                </Component>
+                                <Component Id="cmpF9E0FD176CE02D619DD4A6A928BF76B4" Guid="{4E0432BC-BE76-41A8-A6AD-D019000F337A}">
+                                    <File Id="fil8689C016A5ADCA9FF4A7191450136A37" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\__init__.py" />
+                                </Component>
+                                <Component Id="cmpCEBF6470112D77EDEE50F265049D7F82" Guid="{EE98B613-60C2-4021-BAC5-0F0A31824D60}">
+                                    <File Id="fil9AE4CC76726794959F11906ED4A67F71" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\__init__.pyc" />
+                                </Component>
+                                <Component Id="cmpE9CE88BBC35E83CCC2DEAE23C8C59C65" Guid="{CE9CB166-41DD-4C25-9E70-52B961466EE2}">
+                                    <File Id="fil2106AC631BA6DC47613B3DEA2DA49031" KeyPath="yes" Source="SourceDir\site-packages\qubes\modules\__init__.pyo" />
+                                </Component>
+                            </Directory>
+                            <Directory Id="dirCA426C516ED59CA14ADB91AEC6ABD51B" Name="storage">
+                                <Component Id="cmp833048CF3C7C30BA8887A3AA13109C54" Guid="{A6DD9B6A-5358-4F62-97C8-3E8D34E3B9C1}">
+                                    <File Id="fil3305103A534B8D5FB7A9D37ADE9D97C4" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\wni.py" />
+                                </Component>
+                                <Component Id="cmpAE7F3B945DFC66E109AC8D4B669CA478" Guid="{30DA40DB-FDF8-4FB1-BE98-9447636C815E}">
+                                    <File Id="fil5CE2A0A63EB2DA86559D2A08AF0C8939" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\wni.pyc" />
+                                </Component>
+                                <Component Id="cmp604B57925E19BDE15AD2E597F4A6491D" Guid="{9380F10C-2EA8-4575-9FDF-AE63B00146AB}">
+                                    <File Id="filA8E49B96B121C7FB9282993961E9C17F" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\wni.pyo" />
+                                </Component>
+                                <Component Id="cmpA30D84D4A98B5A4DBCE5C76B0D4C938B" Guid="{44D1BF32-5625-435E-9F0B-517419000D63}">
+                                    <File Id="fil83E84A381DC20A3558F4F48ECA20376E" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\__init__.py" />
+                                </Component>
+                                <Component Id="cmpC6246581028B625079F15C154DC50F3F" Guid="{9A5454F4-6B58-4748-987E-4AE4B95FC069}">
+                                    <File Id="filEDA3AA0B3CB1BED138FCD6EA6706FF12" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\__init__.pyc" />
+                                </Component>
+                                <Component Id="cmp7E6E0B906BD08C5598C15CF04446DCFA" Guid="{67A977C9-DD9E-41C2-B492-30BF3D9DF529}">
+                                    <File Id="fil3FB5F53B41494F1652D398C94189083E" KeyPath="yes" Source="SourceDir\site-packages\qubes\storage\__init__.pyo" />
+                                </Component>
+                            </Directory>
+                        </Directory>
+                    </Directory>
+                    <Directory Id='PYTHONDLLSDIR' Name='DLLs'/>
+                </Directory>
+                <Directory Id='ProgramFiles64Folder' Name='PFiles'>
+                    <Directory Id='ITL' Name='Invisible Things Lab'>
+                        <Directory Id='INSTALLDIR' Name='Qubes'>
+                            <Component Id="cmp57B019633F5721562AF090E83BF1351A" Guid="{46CD998C-B72A-4D4D-8EFB-8633E4860186}">
+                                <File Id="filB04EE543D14163A4F31EA0EEF667A423" KeyPath="yes" Source="SourceDir\pfiles\vm-template-hvm.xml" />
+                            </Component>
+                            <Component Id="cmp4D638691EDC960A6172B58F6E7D9A820" Guid="{D52EA661-F5C1-4D95-8DF9-B7E5BE4EFEE5}">
+                                <File Id="filD99AD7D9573F1FF0ADFCC5896349B9FA" KeyPath="yes" Source="SourceDir\pfiles\vm-template.xml" />
+                            </Component>
+                            <Directory Id='QubesBin' Name='bin'>
+                                <Component Id="cmpD3EDBB2858119439787488B3B48351A4" Guid="{BC7596DA-C8B3-499D-959D-352D076D0EA1}">
+                                    <File Id="fil1AC2CA49756335604AEF9F44F9A111C3" KeyPath="yes" Source="SourceDir\bin\qubes-dom0-network-via-netvm.py" />
+                                </Component>
+                                <Component Id="cmp37FC63F190A4BB47BA0BC1ECFCE66937" Guid="{B4CC4BD6-55A8-427E-92BA-720BD22F82A3}">
+                                    <File Id="fil02D51653CBBFDFAA2C6D3BFCF4344D08" KeyPath="yes" Source="SourceDir\bin\qubes-hcl-report.py" />
+                                </Component>
+                                <Component Id="cmp2CC88417E398A97795C11BE890EF8AED" Guid="{7903A795-0A47-4F9C-831F-6172A40056A0}">
+                                    <File Id="filCD4F2B26BB72812A975B50BBB434D97D" KeyPath="yes" Source="SourceDir\bin\qubes-prefs.py" />
+                                </Component>
+                                <Component Id="cmpA731FAE78A496DB8FC155C60DAF537DB" Guid="{1A236979-FBBA-4AF1-94B5-A55031647ACF}">
+                                    <File Id="fil6AEEB4162198BF8CE96961158E5CF809" KeyPath="yes" Source="SourceDir\bin\qvm-add-appvm.py" />
+                                </Component>
+                                <Component Id="cmp61A8B43817CFC94B336E82CB94C002E8" Guid="{C1FBFFF4-939D-46BD-BD45-86BD3D1193C7}">
+                                    <File Id="filE91DE2900169A678EE52C0D79FB51B6E" KeyPath="yes" Source="SourceDir\bin\qvm-add-template.py" />
+                                </Component>
+                                <Component Id="cmp573E15884341E6D159D96B44BA522362" Guid="{E42A0BBD-7DDB-4271-A04C-7B7359A422EF}">
+                                    <File Id="filC1014B756B8223FEDF622DDB289352B2" KeyPath="yes" Source="SourceDir\bin\qvm-backup-restore.py" />
+                                </Component>
+                                <Component Id="cmpF5980007AB744AD155E795FC3F6BF55E" Guid="{945C16B5-66CE-4C93-B5BA-F42C5895DA36}">
+                                    <File Id="filF7E79110016C6AF417556C0999C48BCF" KeyPath="yes" Source="SourceDir\bin\qvm-backup.py" />
+                                </Component>
+                                <Component Id="cmpC7B184182ED98DC1CDBA02AAF72ED517" Guid="{A517527D-41F6-4583-89D7-C18E437890C3}">
+                                    <File Id="fil3E40AAA3078D45A84511DAFACF52FBA4" KeyPath="yes" Source="SourceDir\bin\qvm-block.py" />
+                                </Component>
+                                <Component Id="cmp9AA23B0D8D59B9A079886E1B2D07E4D9" Guid="{F501D54F-C20A-4781-9F40-AC1D7CA2AB24}">
+                                    <File Id="filADD1B1A0A7AD41743883DA086858B3A1" KeyPath="yes" Source="SourceDir\bin\qvm-clone.py" />
+                                </Component>
+                                <Component Id="cmp94733917167D3C18BC654D278E356439" Guid="{B45E1313-7C86-463A-BAB3-794711144B52}">
+                                    <File Id="filF5C0B0D6674E72F9C64C06C95C7EAB2F" KeyPath="yes" Source="SourceDir\bin\qvm-create-default-dvm.py" />
+                                </Component>
+                                <Component Id="cmpD606AC346F88D0EED8E1DA609AAC8119" Guid="{852FD314-F37E-4E67-8E86-618F40E67C0E}">
+                                    <File Id="filCFAD2BAC2E477073F53FA40783AADD65" KeyPath="yes" Source="SourceDir\bin\qvm-create.py" />
+                                </Component>
+                                <Component Id="cmpF4A32D4AA76653A4FCB248011B1B8974" Guid="{EFF14A38-5F19-47D4-9207-A41E0E8FC6C0}">
+                                    <File Id="fil35B5ADC6D57C95D50F5E9A24761E8BCB" KeyPath="yes" Source="SourceDir\bin\qvm-firewall.py" />
+                                </Component>
+                                <Component Id="cmpA8187499CAF0FDDBA104888515FA8896" Guid="{5B065C7C-DEB0-4443-9866-4BF6CCA8B448}">
+                                    <File Id="fil0E6F60A53C963FE535419AAE47668009" KeyPath="yes" Source="SourceDir\bin\qvm-grow-private.py" />
+                                </Component>
+                                <Component Id="cmp7B126EFD10FE0D9EC28E8F6153585C13" Guid="{763429AA-B979-4ACB-89C7-BAA4924D9A84}">
+                                    <File Id="fil246FE5137FBB86D836025E5E2927F3A8" KeyPath="yes" Source="SourceDir\bin\qvm-init-storage.py" />
+                                </Component>
+                                <Component Id="cmpD67CF727EF4F482FDBCCD7BDA881BFF6" Guid="{6C314F88-9C6D-4A09-8FAC-810BF172179E}">
+                                    <File Id="filA9CB4A2064A16A2F3883B15B0924B16E" KeyPath="yes" Source="SourceDir\bin\qvm-kill.py" />
+                                </Component>
+                                <Component Id="cmp56EA9D38C0643DDD01736F04710F0704" Guid="{1C63825B-69D4-47F6-8EF4-9A757BC969AB}">
+                                    <File Id="filAFA9C648E869B44BE3177F587FED7F51" KeyPath="yes" Source="SourceDir\bin\qvm-ls.py" />
+                                </Component>
+                                <Component Id="cmpB675C8C3CD9A9AB234413408292441D8" Guid="{D9C3DFBD-6D58-4FC0-B779-5542442D8EDF}">
+                                    <File Id="filB4D814B1E77BE61277C408AA6CE94358" KeyPath="yes" Source="SourceDir\bin\qvm-pci.py" />
+                                </Component>
+                                <Component Id="cmpE5504CB45A3C3A4DD5E2496089672FC8" Guid="{191D2164-9637-4B1B-A98C-EB5F463B8739}">
+                                    <File Id="filD3AB743B35B4D3C2B163F97A5EFD1770" KeyPath="yes" Source="SourceDir\bin\qvm-prefs.py" />
+                                </Component>
+                                <Component Id="cmpB91B5FEFC3B48F1E528C22DE208D4014" Guid="{916C7BC7-BD49-4676-9CFA-EF54DD9E97BB}">
+                                    <File Id="filC3B1D769B106F497AE869F41EF88049B" KeyPath="yes" Source="SourceDir\bin\qvm-remove.py" />
+                                </Component>
+                                <Component Id="cmp67F0AF1F75DEB924BF8AFD9370B631CF" Guid="{FA5F48DD-8042-42DD-995C-045BDFB72FD7}">
+                                    <File Id="fil99479794067BAB5955EFE86549A5D86C" KeyPath="yes" Source="SourceDir\bin\qvm-revert-template-changes.py" />
+                                </Component>
+                                <Component Id="cmpECC51CCD0774845710F99A55A2BDDC65" Guid="{8217224F-9E1E-492E-BC1E-27379E58439A}">
+                                    <File Id="fil72605152D3F840A13840CC997B4D701F" KeyPath="yes" Source="SourceDir\bin\qvm-run.py" />
+                                </Component>
+                                <Component Id="cmp17B075750D61C461D070A8A4E4C9D8F4" Guid="{DEB0F705-1A54-422E-9F35-98B2891766BE}">
+                                    <File Id="filED1202276583CD714EE65E78E5AFCE5F" KeyPath="yes" Source="SourceDir\bin\qvm-service.py" />
+                                </Component>
+                                <Component Id="cmp1A5471422027F596D6ABF731FA22DFBA" Guid="{70E59086-FCE3-4D37-A165-080B8C997ED9}">
+                                    <File Id="fil9AB3600F60C3D972657181EF4665D3DF" KeyPath="yes" Source="SourceDir\bin\qvm-shutdown.py" />
+                                </Component>
+                                <Component Id="cmp538F7FB133791979E2AC0A3DE0FECA58" Guid="{D5F15B7D-0B91-4C6A-84E8-AB984E19DF8F}">
+                                    <File Id="filB7C2CF5037BCEE73A84378CC9DE175C4" KeyPath="yes" Source="SourceDir\bin\qvm-start.py" />
+                                    <!-- XXX added to some basic .py file
+                                         components b/c every component must
+                                         have key path and environment element
+                                         can't one; I don't like registry trick -->
+                                    <Environment Id='UpdatePathExt' Name='PATHEXT' Action='set' System='yes' Part='last' Value='.py'/>
+                                    <Environment Id='UpdatePath' Name='PATH' Action='set' System='yes' Part='last' Value='[INSTALLDIR]\bin'/>
+                                </Component>
+                                <Component Id="cmp30EF38DB379FD132CC9A8D33EC487089" Guid="{C518B30C-D904-4D2D-BD2A-E2804A5423EF}">
+                                    <File Id="fil743CE05FB032D3DF5649134F4E80CD49" KeyPath="yes" Source="SourceDir\bin\qvm-sync-clock.py" />
+                                </Component>
+                                <Component Id="cmp7EEB09D5F824691FEC7A3A851CFF36F9" Guid="{F4E1E328-7356-4F36-999D-E45AAC5BE1A4}">
+                                    <File Id="fil04C75E9B196D42DFBB1BA215A684C780" KeyPath="yes" Source="SourceDir\bin\qvm-template-commit.py" />
+                                </Component>
+                                <Component Id="cmp18621CEFD5CB0E1D68C6A0C521CBEF60" Guid="{C10ED6F8-E4B8-4D9C-88D5-9CEF8D7F3041}">
+                                    <File Id="fil08348F1FC8D099495DFEB327910028AB" KeyPath="yes" Source="SourceDir\bin\qvm-usb.py" />
+                                </Component>
+                            </Directory>
+                            <Directory Id='QubesIcons' Name='icons'>
+                                <Component Id='IconBlue' Guid='{6A265F8E-D416-4843-824D-5CA3DB97BD85}'>
+                                    <File Id='IconBlue' KeyPath='yes' Source='SourceDir\icons\Blue.png'/>
+                                </Component>
+                                <Component Id='IconGray' Guid='{E8358C3D-AD89-4B1D-A209-E2C8DFB5F8D6}'>
+                                    <File Id='IconGray' KeyPath='yes' Source='SourceDir\icons\gray.png'/>
+                                </Component>
+                                <Component Id='IconGreen' Guid='{EE4A719E-1552-4380-B639-7FB72C330ED1}'>
+                                    <File Id='IconGreen' KeyPath='yes' Source='SourceDir\icons\green.png'/>
+                                </Component>
+                                <Component Id='IconYellow' Guid='{327773F2-3B41-4007-889C-0071046FBA84}'>
+                                    <File Id='IconYellow' KeyPath='yes' Source='SourceDir\icons\yellow.png'/>
+                                </Component>
+                                <Component Id='IconOrange' Guid='{7C4B86EF-CDC5-4B99-9280-A90BA6F0844D}'>
+                                    <File Id='IconOrange' KeyPath='yes' Source='SourceDir\icons\orange.png'/>
+                                </Component>
+                                <Component Id='IconBlack' Guid='{22142175-96E1-425A-91E4-79966AD99C5E}'>
+                                    <File Id='IconBlack' KeyPath='yes' Source='SourceDir\icons\black.png'/>
+                                </Component>
+                                <Component Id='IconPurple' Guid='{3CF041CA-6366-4FF4-870C-0CC346BD784D}'>
+                                    <File Id='IconPurple' KeyPath='yes' Source='SourceDir\icons\purple.png'/>
+                                </Component>
+                                <Component Id='IconRed' Guid='{A8E42A0D-2F8A-4773-9A9D-52B6634FD3B9}'>
+                                    <File Id='IconRed' KeyPath='yes' Source='SourceDir\icons\red.png'/>
+                                </Component>
+                            </Directory>
+                            <Directory Id='QubesQubesRPC' Name='qubes-rpc'>
+                                <Component Id="cmpBE5F6B07B4D1D084573B955BE49F6257" Guid="{E812483E-A3D4-49E0-952F-A1DD06A6DE42}">
+                                    <File Id="filDC0CC131F49D9BCEBB18EA7957CFB8BC" KeyPath="yes" Source="SourceDir\etc\qubes-rpc\qubes.NotifyUpdates" />
+                                </Component>
+                                <Directory Id="dirCDCB92F2C3ABD8E793620D96AE22EF63" Name="policy">
+                                    <Component Id="cmp9815ED364F09A7FDCD0EF0C7A45A24EB" Guid="{655B5A84-1416-4A29-94E5-E326EC333F47}">
+                                        <File Id="filB070FC9A893A7A43F5313F22216B327E" KeyPath="yes" Source="SourceDir\etc\qubes-rpc\policy\qubes.Filecopy" />
+                                    </Component>
+                                    <Component Id="cmpAF20F89F48789553DA57A6E6B6C4C3B5" Guid="{97DE764D-F3C5-40C4-A492-530E59CAC776}">
+                                        <File Id="fil1AE6FE869286007B69B563E34FE3A679" KeyPath="yes" Source="SourceDir\etc\qubes-rpc\policy\qubes.NotifyUpdates" />
+                                    </Component>
+                                    <Component Id="cmp0ACFA23C070FEE9C22F690612DDC6A97" Guid="{A8EC92E7-BAC6-4FE0-9D85-83FEE47E4EA5}">
+                                        <File Id="fil55660E3580F351E1DF4A1106546E741E" KeyPath="yes" Source="SourceDir\etc\qubes-rpc\policy\qubes.OpenInVM" />
+                                    </Component>
+                                    <Component Id="cmp1B735A24EFF2868860ED904AC462C977" Guid="{B304D8CE-B806-41E5-A366-768D88619041}">
+                                        <File Id="filF19A8F02293BFAD31F9EF7569DD3702C" KeyPath="yes" Source="SourceDir\etc\qubes-rpc\policy\qubes.VMShell" />
+                                    </Component>
+                                </Directory>
+                            </Directory>
+                        </Directory>
+                    </Directory>
+                </Directory>
+            </Directory>
+        </Directory>
+    </Module>
+</Wix>