mirror of
https://github.com/microsoft/WSL.git
synced 2025-12-10 00:44:55 -06:00
702 lines
43 KiB
Plaintext
702 lines
43 KiB
Plaintext
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
|
<Package Name="Windows Subsystem for Linux" Language="1033" InstallerVersion="500" Version="${PACKAGE_VERSION}" Manufacturer="Microsoft Corporation" UpgradeCode="6D5B792B-1EDC-4DE9-8EAD-201B820F8E82" Scope="perMachine" Compressed="${COMPRESS_PACKAGE}">
|
|
<MajorUpgrade AllowDowngrades="yes" Disallow="no" />
|
|
<MediaTemplate EmbedCab="yes" />
|
|
|
|
<StandardDirectory Id="ProgramFiles64Folder">
|
|
<Directory Id="INSTALLDIR" Name="WSL">
|
|
<Directory Id="TOOLSFOLDER" Name="tools" />
|
|
<Directory Id="LIBFOLDER" Name="lib" />
|
|
<?if "${WSL_BUILD_WSL_SETTINGS}" = "true" ?>
|
|
<Directory Id="WSLSETTINGS" Name="wslsettings"/>
|
|
<?endif?>
|
|
</Directory>
|
|
</StandardDirectory>
|
|
|
|
<Icon Id="wsl.ico" SourceFile="${CMAKE_SOURCE_DIR}/images/wsl.ico"/>
|
|
<Property Id="ARPPRODUCTICON" Value="wsl.ico"/>
|
|
|
|
<DirectoryRef Id="INSTALLDIR">
|
|
<Component Id="wsl" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134730" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<RemoveFile Id="CleanUpWSLShortCut" Directory="ProgramMenuFolder" Name="WSL" On="uninstall"/>
|
|
<File Id="wsl.exe" Name="wsl.exe" Source="${BIN}/wsl.exe" KeyPath="yes">
|
|
<Shortcut Id="WSLShortcut" Name="WSL" Description="Windows Subsystem for Linux" Arguments="--cd ~" Advertise="yes" Directory="ProgramMenuFolder" Icon="wsl.ico">
|
|
<ShortcutProperty Key="System.AppUserModel.ID" Value="Microsoft.WSL"/>
|
|
<ShortcutProperty Key="System.AppUserModel.ToastActivatorCLSID" Value="{2B9C59C3-98F1-45C8-B87B-12AE3C7927E8}"/>
|
|
</Shortcut>
|
|
</File>
|
|
|
|
<File Id="wslg.exe" Name="wslg.exe" Source="${BIN}/wslg.exe" />
|
|
<File Id="wslhost.exe" Name="wslhost.exe" Source="${BIN}/wslhost.exe" />
|
|
<File Id="wslrelay.exe" Name="wslrelay.exe" Source="${BIN}/wslrelay.exe" />
|
|
<File Id="wslserviceproxystub.dll" Name="wslserviceproxystub.dll" Source="${BIN}/wslserviceproxystub.dll" />
|
|
<File Id="wsldeps.dll" Name="wsldeps.dll" Source="${BIN}/wsldeps.dll" />
|
|
|
|
<?if "${WSL_BUILD_WSL_SETTINGS}" = "true" ?>
|
|
<File Id="libwsl.dll" Name="libwsl.dll" Source="${BIN}/libwsl.dll" />
|
|
<?endif?>
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<File Id="system.vhd" Source="${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/system.vhd"/>
|
|
<?endif?>
|
|
|
|
|
|
<!-- Temporary runtime VHD. TODO: Update once the final VHD is available. -->
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" AND "${TARGET_PLATFORM}" = "x64" ?>
|
|
<File Id="wslarootfs.vhd" Name="wslarootfs.vhd" Source="${WSLA_TEST_DISTRO_SOURCE_DIR}/wslatestrootfs.vhd"/>
|
|
<?endif?>
|
|
|
|
<!-- Installation folder -->
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\MSI">
|
|
<RegistryValue Name="InstallLocation" Value="[INSTALLDIR]" Type="string" />
|
|
<RegistryValue Name="ProductCode" Value="[ProductCode]" Type="string" />
|
|
<RegistryValue Name="Version" Value="${PACKAGE_VERSION}" Type="string" />
|
|
</RegistryKey>
|
|
</Component>
|
|
|
|
<Component Id="explorerplan9shortcut" Guid="{93CBFF23-A04C-4344-A332-238CE5B97AED}" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<!-- Explorer extensions -->
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\CLSID\{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6}">
|
|
<RegistryValue Value="Linux" Type="string"/>
|
|
<RegistryValue Name="SortOrderIndex" Value="119" Type="integer"/>
|
|
<!--0x77-->
|
|
<RegistryValue Name="System.IsPinnedToNameSpaceTree" Value="1" Type="integer"/>
|
|
|
|
<RegistryKey Key="DefaultIcon">
|
|
<RegistryValue Value="[System64Folder]wsl.exe,-1" Type="string"/>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[System64Folder]windows.storage.dll" Type="string"/>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Key="ShellFolder">
|
|
<RegistryValue Name="Attributes" Value="2692743245" Type="integer"/>
|
|
<!--0xa080004d"-->
|
|
<RegistryValue Name="FolderValueFlags" Value="40" Type="integer"/>
|
|
<!--0x28-->
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Key="Instance">
|
|
<RegistryValue Name="CLSID" Value="{4FE04BFD-85B9-49DD-B914-F4C9556B9DA6}" Type="string"/>
|
|
|
|
<RegistryKey Key="InitPropertyBag">
|
|
<RegistryValue Name="DisplayType" Value="2" Type="integer"/>
|
|
<RegistryValue Name="EnumObjectsTelemetryValue" Value="WSL" Type="string"/>
|
|
<RegistryValue Name="Provider" Value="Plan 9 Network Provider" Type="string"/>
|
|
<RegistryValue Name="ResName" Value="\\wsl.localhost" Type="string"/>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel">
|
|
<RegistryValue Name="{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6}" Value="1" Type="integer"/>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6}">
|
|
<RegistryValue Value="Linux" Type="string"/>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\IdListAliasTranslations\WSL">
|
|
<RegistryValue Name="Target" Value="::{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6}" Type="string"/>
|
|
<RegistryValue Name="Source" Value="\\wsl.localhost" Type="string"/>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\IdListAliasTranslations\WSLLegacy">
|
|
<RegistryValue Name="Target" Value="::{B2B4A4D1-2754-4140-A2EB-9A76D9D7CDC6}" Type="string"/>
|
|
<RegistryValue Name="Source" Value="\\wsl$" Type="string"/>
|
|
</RegistryKey>
|
|
</Component>
|
|
|
|
<Component Id="explorershell" Guid="{93CBFF23-A04C-4344-A332-238CE5B97AEC}" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<?foreach PATH in SOFTWARE\Classes\Directory\shell\WSL;SOFTWARE\Classes\Directory\Background\shell\WSL;SOFTWARE\Classes\Drive\shell\WSL?>
|
|
<RegistryKey Root="HKLM" Key="$(var.PATH)">
|
|
<RegistryValue Value="@wsl.exe,-2" Type="string"/>
|
|
<RegistryValue Name="Extended" Value="" Type="string"/>
|
|
<RegistryValue Name="NoWorkingDirectory" Value="" Type="string"/>
|
|
<RegistryKey Key="command">
|
|
<RegistryValue Value='wsl.exe --cd "%V"' Type="string"/>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
<?endforeach?>
|
|
|
|
<ProgId Id="WSLDistributionTar" Description="WSL tar distribution" Icon="wsl.exe">
|
|
<Extension Id="wsl">
|
|
<Verb Id="open" Command="open" TargetFile="wsl.exe" Argument="--install --prompt-before-exit --from-file "%1"" />
|
|
</Extension>
|
|
</ProgId>
|
|
</Component>
|
|
|
|
<Component Id="wslservice" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134735" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
|
|
<!-- WslServiceProxyStub -->
|
|
<RegistryKey Root="HKCR" Key="Interface\{38541BDC-F54F-4CEB-85D0-37F0F3D2617E}">
|
|
<RegistryValue Value="ILxssUserSession" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC60}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- WSLServiceProxyStub. -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{4EA0C6DD-E9FF-48E7-994E-13A31D10DC60}">
|
|
<RegistryValue Value="PSFactoryBuffer" Type="string" />
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wslserviceproxystub.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- ILxssUserSession -->
|
|
<RegistryKey Root="HKCR" Key="AppID\{370121D2-AA7E-4608-A86D-0BBAB9DA1A60}">
|
|
|
|
<!-- O:BAG:BAD:(A;;CCDCSW;;;AU)(A;;CCDCSW;;;PS)(A;;CCDCSW;;;SY) -->
|
|
<RegistryValue Name="AccessPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LaunchPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LocalService" Value="WSLService" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- WslSupport + LxssUserSession -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{a9b7a1b9-0671-405c-95f1-e0612cb4ce7e}">
|
|
<RegistryValue Name="AppId" Value="{370121D2-AA7E-4608-A86D-0BBAB9DA1A60}" Type="string" />
|
|
<RegistryValue Value="LxssUserSession" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- Notification server -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{2B9C59C3-98F1-45C8-B87B-12AE3C7927E8}\LocalServer32">
|
|
<RegistryValue Value='"[INSTALLDIR]wslhost.exe"' Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- wsldevicehost.dll -->
|
|
<RegistryKey Root="HKCR" Key="AppID\{17696EAC-9568-4CF5-BB8C-82515AAD6C09}">
|
|
<RegistryValue Name="DllSurrogate" Value="" Type="string" />
|
|
<RegistryValue Name="AppIDFlags" Value="2048" Type="integer" />
|
|
|
|
<!-- O:BAG:BAD:(A;;CCDCSW;;;AU)(A;;CCDCSW;;;PS)(A;;CCDCSW;;;SY) -->
|
|
<RegistryValue Name="AccessPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LaunchPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
</RegistryKey>
|
|
|
|
<!-- WslDeviceHost_VirtioPmem -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{ABB755FC-1B86-4255-83E2-E5787ABCF6C2}">
|
|
<RegistryValue Value="WslDeviceHost_VirtioPmem" Type="string" />
|
|
<RegistryValue Name="AppId" Value="{17696EAC-9568-4CF5-BB8C-82515AAD6C09}" Type="string"/>
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wsldevicehost.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- WslDeviceHost_VirtioFs (admin) -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{7e6ad219-d1b3-42d5-b8ee-d96324e64ff6}">
|
|
<RegistryValue Value="WslDeviceHost_VirtioFs_Admin" Type="string"/>
|
|
<RegistryValue Name="AppId" Value="{7F82AD86-755B-4870-86B1-D2E68DFE8A49}" Type="string"/>
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wsldevicehost.dll" Type="string"/>
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string"/>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<RegistryKey Root="HKCR" Key="AppID\{7F82AD86-755B-4870-86B1-D2E68DFE8A49}">
|
|
<RegistryValue Name="DllSurrogate" Value="" Type="string"/>
|
|
<RegistryValue Name="AppIDFlags" Value="2048" Type="integer"/> <!--0x800-->
|
|
|
|
<!-- O:BAG:BAD:(A;;CCDCSW;;;AU)(A;;CCDCSW;;;PS)(A;;CCDCSW;;;SY) -->
|
|
<RegistryValue Name="AccessPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LaunchPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
</RegistryKey>
|
|
|
|
<!-- WslDeviceHost_VirtioFs -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{60285AE6-AAF3-4456-B444-A6C2D0DEDA38}">
|
|
<RegistryValue Value="WslDeviceHost_VirtioFs" Type="string" />
|
|
<RegistryValue Name="AppId" Value="{17696EAC-9568-4CF5-BB8C-82515AAD6C09}" Type="string" />
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wsldevicehost.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- WslDeviceHost_VirtioNet -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{16479D2E-F0C3-4DBA-BF7A-04FFF0892B07}">
|
|
<RegistryValue Value="WslDeviceHost_Net" Type="string" />
|
|
<RegistryValue Name="AppId" Value="{17696EAC-9568-4CF5-BB8C-82515AAD6C09}" Type="string" />
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wsldevicehost.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- Session 0 service -->
|
|
<File Id="wslservice.exe" Source="${BIN}/wslservice.exe" KeyPath="yes" />
|
|
<ServiceInstall Name="WSLService" DisplayName="WSL Service" Description="WSL Service" Start="auto" Type="ownProcess" ErrorControl="normal" Account="LocalSystem" Vital="yes" Interactive="no" />
|
|
|
|
<!-- The service is stopped on uninstall and upgrade.
|
|
N.B. It shouldn't be started on install because it will fail to start if the OC is missing,
|
|
which would fail the install. -->
|
|
<ServiceControl Id="StopService" Stop="both" Remove="uninstall" Name="WSLService" Wait="yes" />
|
|
</Component>
|
|
|
|
<Component Id="wslaservice" Guid="DC97520E-BFA5-4559-960F-D580E151629F" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<!-- WSLAServiceProxyStub. -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}">
|
|
<RegistryValue Value="PSFactoryBuffer" Type="string" />
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wslaserviceproxystub.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- WSLAService COM app -->
|
|
<RegistryKey Root="HKCR" Key="AppID\{E9B79997-57E3-4201-AECC-6A464E530DD2}">
|
|
|
|
<!-- O:BAG:BAD:(A;;CCDCSW;;;AU)(A;;CCDCSW;;;PS)(A;;CCDCSW;;;SY) -->
|
|
<RegistryValue Name="AccessPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LaunchPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LocalService" Value="WSLAService" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- WSLAContainer -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{B1F1C4E3-C225-4CAE-AD8A-34C004DE1AE4}">
|
|
<RegistryValue Name="AppId" Value="{E9B79997-57E3-4201-AECC-6A464E530DD2}" Type="string" />
|
|
<RegistryValue Value="WSLAContainer" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- WSLAProcess -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{AFBEA6D6-D8A4-4F81-8FED-F947EB74B33B}">
|
|
<RegistryValue Name="AppId" Value="{E9B79997-57E3-4201-AECC-6A464E530DD2}" Type="string" />
|
|
<RegistryValue Value="WSLAProcess" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- WSLAUserSession -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{a9b7a1b9-0671-405c-95f1-e0612cb4ce8f}">
|
|
<RegistryValue Name="AppId" Value="{E9B79997-57E3-4201-AECC-6A464E530DD2}" Type="string" />
|
|
<RegistryValue Value="WSLAUserSession" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- WSLAVirtualMachine -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{0CFC5DC1-B6A7-45FC-8034-3FA9ED73CE30}">
|
|
<RegistryValue Name="AppId" Value="{E9B79997-57E3-4201-AECC-6A464E530DD2}" Type="string" />
|
|
<RegistryValue Value="WSLAVirtualMachine" Type="string" />
|
|
</RegistryKey>
|
|
<!-- WSLASession -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{4877FEFC-4977-4929-A958-9F36AA1892A4}">
|
|
<RegistryValue Name="AppId" Value="{E9B79997-57E3-4201-AECC-6A464E530DD2}" Type="string" />
|
|
<RegistryValue Value="WSLASession" Type="string" />
|
|
</RegistryKey>
|
|
|
|
<!-- IWSLAUserSession-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{82A7ABC8-6B50-43FC-AB96-15FBBE7E8760}">
|
|
<RegistryValue Value="IWSLAUserSession" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- IWSLAVirtualMachine-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{82A7ABC8-6B50-43FC-AB96-15FBBE7E8761}">
|
|
<RegistryValue Value="IWSLAVirtualMachine" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- IWSLAContainer-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{7577FE8D-DE85-471E-B870-11669986F332}">
|
|
<RegistryValue Value="IWSLAContainer" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- IWSLAProcess-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{1AD163CD-393D-4B33-83A2-8A3F3F23E608}">
|
|
<RegistryValue Value="IWSLAProcess" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- ITerminationCallback-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{7BC4E198-6531-4FA6-ADE2-5EF3D2A04DFE}">
|
|
<RegistryValue Value="ITerminationCallback" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- IProgressCallback-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{5038842F-53DB-4F30-A6D0-A41B02C94AC1}">
|
|
<RegistryValue Value="IProgressCallback" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- IWSLASession-->
|
|
<RegistryKey Root="HKCR" Key="Interface\{EF0661E4-6364-40EA-B433-E2FDF11F3519}">
|
|
<RegistryValue Value="IWSLASession" Type="string" />
|
|
<RegistryKey Key="ProxyStubClsid32">
|
|
<RegistryValue Value="{4EA0C6DD-E9FF-48E7-994E-13A31D10DC61}" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<!-- wsldevicehost.dll -->
|
|
<RegistryKey Root="HKCR" Key="AppID\{C457EA11-5486-4174-B90D-089909EDB170}">
|
|
<RegistryValue Name="DllSurrogate" Value="" Type="string" />
|
|
<RegistryValue Name="AppIDFlags" Value="2048" Type="integer" />
|
|
|
|
<!-- O:BAG:BAD:(A;;CCDCSW;;;AU)(A;;CCDCSW;;;PS)(A;;CCDCSW;;;SY) -->
|
|
<RegistryValue Name="AccessPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
<RegistryValue Name="LaunchPermission" Value="01000480580000006800000000000000140000000200440003000000000014000B00000001010000000000050B000000000014000B00000001010000000000050A000000000014000B0000000101000000000005120000000102000000000005200000002002000001020000000000052000000020020000" Type="binary" />
|
|
</RegistryKey>
|
|
|
|
<!-- WslDeviceHost_VirtioNet -->
|
|
<RegistryKey Root="HKCR" Key="CLSID\{7B3C9A42-8E1F-4D5A-9F2E-C4A7B8D3E6F1}">
|
|
<RegistryValue Value="WslDeviceHost_Net" Type="string" />
|
|
<RegistryValue Name="AppId" Value="{C457EA11-5486-4174-B90D-089909EDB170}" Type="string" />
|
|
|
|
<RegistryKey Key="InProcServer32">
|
|
<RegistryValue Value="[INSTALLDIR]wsldevicehost.dll" Type="string" />
|
|
<RegistryValue Name="ThreadingModel" Value="Both" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
|
|
<File Id="wslaservice.exe" Source="${BIN}/wslaservice.exe" KeyPath="yes" />
|
|
<File Id="wslaserviceproxystub.dll" Name="wslaserviceproxystub.dll" Source="${BIN}/wslaserviceproxystub.dll" />
|
|
|
|
<ServiceInstall Name="WSLAService" DisplayName="WSLA Service" Description="WSLA Service" Start="auto" Type="ownProcess" ErrorControl="normal" Account="LocalSystem" Vital="yes" Interactive="no" />
|
|
<ServiceControl Id="StopWSLAService" Stop="both" Remove="uninstall" Name="WSLAService" Wait="yes" />
|
|
</Component>
|
|
<Component Id="wslg" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134731" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<File Id="msrdc.exe" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/msrdc.exe" />
|
|
<File Id="wslg.rdp" Source="${WSLG_SOURCE_DIR}/wslg.rdp" />
|
|
<File Id="wslg_desktop.rdp" Source="${WSLG_SOURCE_DIR}/wslg_desktop.rdp" />
|
|
<File Id="rdclientax.dll" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdclientax.dll" />
|
|
<File Id="rdpnanoTransport.dll" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdpnanoTransport.dll" />
|
|
<File Id="RdpWinStlHelper.dll" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/RdpWinStlHelper.dll" />
|
|
<?endif?>
|
|
<File Id="wsldevicehost.dll" Source="${BIN}/wsldevicehost.dll" />
|
|
<File Id="lxutil.dll" Source="${BIN}/lxutil.dll" />
|
|
<File Id="${WSLG_TS_PLUGIN_DLL}" Source="${BIN}/${WSLG_TS_PLUGIN_DLL}" />
|
|
|
|
<!-- MSRDC Plugin registration -->
|
|
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Terminal Server Client\Default\OptionalAddIns\WSLDVC_PACKAGE">
|
|
<RegistryValue Name="Name" Value="[INSTALLDIR]WSLDVCPlugin.dll" Type="string" />
|
|
</RegistryKey>
|
|
</Component>
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<Component Id="msal" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134734" UninstallWhenSuperseded="yes" DisableRegistryReflection="yes" Bitness="always64">
|
|
<File Id="msal.wsl.proxy.exe" Source="${MSAL_SOURCE_DIR}/${TARGET_PLATFORM}/msal.wsl.proxy.exe" />
|
|
</Component>
|
|
<?endif?>
|
|
</DirectoryRef>
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<DirectoryRef Id="LIBFOLDER">
|
|
<Component Id="directx" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134732" Bitness="always64" UninstallWhenSuperseded="yes">
|
|
<File Id="libd3d12.so" Source="${DIRECT3D_SOURCE_DIR}/lib/${TARGET_PLATFORM}/libd3d12.so" />
|
|
<File Id="libd3d12core.so" Source="${DIRECT3D_SOURCE_DIR}/lib/${TARGET_PLATFORM}/libd3d12core.so" />
|
|
<File Id="libdxcore.so" Source="${DXCORE_SOURCE_DIR}/lib/libdxcore.so" />
|
|
</Component>
|
|
</DirectoryRef>
|
|
<?endif?>
|
|
|
|
<DirectoryRef Id="TOOLSFOLDER">
|
|
<Component Id="tools" Guid="F0C8D6BA-1502-41E7-BF72-D93DFA134733" Bitness="always64" UninstallWhenSuperseded="yes">
|
|
<File Id="init" Source="${BIN}/init" Checksum="yes" />
|
|
<File Id="initrd.img" Source="${BIN}/initrd.img"/>
|
|
<File Id="bsdtar" Source="${BSDTARD_SOURCE_DIR}/${TARGET_PLATFORM}/bsdtar"/>
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<File Id="kernel" Source="${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/kernel"/>
|
|
<File Id="modules.vhd" Source="${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/modules.vhd"/>
|
|
<?endif?>
|
|
</Component>
|
|
</DirectoryRef>
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<ComponentGroup Id="msrdc_localization" Directory="INSTALLDIR" Source="${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}">
|
|
<Component Id="msrdc_mui" Guid="EDBB5FC5-058D-45D7-BB03-FB1337B3B577" Bitness="always64" UninstallWhenSuperseded="yes" />
|
|
<Files Include="**.mui" />
|
|
</ComponentGroup>
|
|
<?endif?>
|
|
|
|
|
|
<?if "${WSL_BUILD_WSL_SETTINGS}" = "true" ?>
|
|
<ComponentGroup Id="wslsettings" Directory="WSLSETTINGS" Source="${BIN}/wslsettings">
|
|
<Component Id="wslsettingsnonserver" Guid="AB166073-8855-492B-95C8-C6E5939B66A5" Bitness="always64" DisableRegistryReflection="yes" UninstallWhenSuperseded="yes" Condition="MsiNTProductType = 1">
|
|
<RemoveFile Id="CleanUpWSLSettingsShortCutNonServer" Directory="ProgramMenuFolder" Name="WSLSettings" On="uninstall"/>
|
|
<File Id="wslsettings.exe_nonserver" Source="${BIN}/wslsettings/wslsettings.exe" KeyPath="yes" ShortName="kyk8fs6a.exe">
|
|
<Shortcut Id="WSLSettingsShortcutNonServer" Name="WSL Settings" Description="Windows Subsystem for Linux Settings" Advertise="yes" Directory="ProgramMenuFolder" Icon="wsl.ico">
|
|
<ShortcutProperty Key="System.AppUserModel.IsSystemComponent" Value="true"/>
|
|
</Shortcut>
|
|
</File>
|
|
<!-- Protocol registration -->
|
|
<RegistryKey Root="HKLM" Key="Software">
|
|
<RegistryKey Key="Classes">
|
|
<RegistryKey Key="wsl-settings">
|
|
<RegistryValue Value="URL:wsl-settings" Type="string" />
|
|
<RegistryValue Name="URL Protocol" Value="" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="[WSLSETTINGSPROGID]">
|
|
<RegistryKey Key="Application">
|
|
<RegistryValue Name="ApplicationName" Value="WSL Settings" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="shell\open\command">
|
|
<RegistryValue Value='"[WSLSETTINGS]wslsettings.exe" "----ms-protocol:%1"' Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
<RegistryKey Key="Microsoft\WindowsAppRuntimeApplications\[WSLSETTINGSAPPID]\Capabilities\UrlAssociations">
|
|
<RegistryValue Name="wsl-settings" Value="[WSLSETTINGSPROGID]" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="RegisteredApplications">
|
|
<RegistryValue Name="[WSLSETTINGSAPPID]" Value="Software\Microsoft\WindowsAppRuntimeApplications\[WSLSETTINGSAPPID]\Capabilities" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
</Component>
|
|
<Component Id="wslsettingsserver" Guid="EE2D69A0-4F55-4EC5-9576-4FAD70BC798E" Bitness="always64" DisableRegistryReflection="yes" UninstallWhenSuperseded="yes" Condition="MsiNTProductType > 1">
|
|
<RemoveFile Id="CleanUpWSLSettingsShortCutServer" Directory="ProgramMenuFolder" Name="WSLSettings" On="uninstall"/>
|
|
<File Id="wslsettings.exe_server" Source="${BIN}/wslsettings/wslsettings.exe" KeyPath="yes" ShortName="kyk8fs6b.exe">
|
|
<Shortcut Id="WSLSettingsShortcutServer" Name="WSL Settings" Description="Windows Subsystem for Linux Settings" Advertise="yes" Directory="ProgramMenuFolder" Icon="wsl.ico"/>
|
|
</File>
|
|
<!-- Protocol registration -->
|
|
<RegistryKey Root="HKLM" Key="Software">
|
|
<RegistryKey Key="Classes">
|
|
<RegistryKey Key="wsl-settings">
|
|
<RegistryValue Value="URL:wsl-settings" Type="string" />
|
|
<RegistryValue Name="URL Protocol" Value="" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="[WSLSETTINGSPROGID]">
|
|
<RegistryKey Key="Application">
|
|
<RegistryValue Name="ApplicationName" Value="WSL Settings" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="shell\open\command">
|
|
<RegistryValue Value='"[WSLSETTINGS]wslsettings.exe" "----ms-protocol:%1"' Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
<RegistryKey Key="Microsoft\WindowsAppRuntimeApplications\[WSLSETTINGSAPPID]\Capabilities\UrlAssociations">
|
|
<RegistryValue Name="wsl-settings" Value="[WSLSETTINGSPROGID]" Type="string" />
|
|
</RegistryKey>
|
|
<RegistryKey Key="RegisteredApplications">
|
|
<RegistryValue Name="[WSLSETTINGSAPPID]" Value="Software\Microsoft\WindowsAppRuntimeApplications\[WSLSETTINGSAPPID]\Capabilities" Type="string" />
|
|
</RegistryKey>
|
|
</RegistryKey>
|
|
</Component>
|
|
<Files Include="*.dll"/>
|
|
<Files Include="*.exe">
|
|
<Exclude Files="wslsettings.exe" />
|
|
</Files>
|
|
<Files Include="**/*.gif"/>
|
|
<Files Include="**/*.ico"/>
|
|
<Files Include="**/*.mui"/>
|
|
<Files Include="**/*.png"/>
|
|
<Files Include="*.json"/>
|
|
<Files Include="*.pri"/>
|
|
<Files Include="*.winmd"/>
|
|
<Files Include="**/*.xbf"/>
|
|
</ComponentGroup>
|
|
<?endif?>
|
|
|
|
<Feature Id="WSL" Title="Windows Subsystem for Linux" Level="1">
|
|
<ComponentRef Id="wsl" />
|
|
<ComponentRef Id="wslservice" />
|
|
<ComponentRef Id="wslaservice" />
|
|
<ComponentRef Id="wslg" />
|
|
<ComponentRef Id="tools" />
|
|
<ComponentRef Id="explorershell" />
|
|
<ComponentRef Id="explorerplan9shortcut" />
|
|
|
|
<?if "${WSL_DEV_BINARY_PATH}" = "" ?>
|
|
<ComponentRef Id="msal" />
|
|
<ComponentGroupRef Id="msrdc_localization" />
|
|
<ComponentRef Id="directx" />
|
|
<?endif?>
|
|
|
|
<?if "${WSL_BUILD_WSL_SETTINGS}" = "true" ?>
|
|
<ComponentGroupRef Id="wslsettings" />
|
|
<?endif?>
|
|
|
|
</Feature>
|
|
|
|
<Binary Id="wslinstall.dll" SourceFile="${BIN}/wslinstall.dll" />
|
|
<Binary Id="msixpackage" SourceFile="${BIN}/gluepackage.msix"/>
|
|
|
|
<CustomAction Id="ValidateInstall"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="WslValidateInstallation"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="FinalizeInstall"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="WslFinalizeInstallation"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="DeprovisionMsix"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="DeprovisionMsix"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="RemoveMsixAsSystem"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="RemoveMsixAsSystem"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="RemoveMsixAsUser"
|
|
Impersonate="yes"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="RemoveMsixAsUser"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="InstallMsix"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="InstallMsix"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="InstallMsixAsUser"
|
|
Impersonate="yes"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="InstallMsixAsUser"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="CleanExplorerState"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="CleanExplorerState"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="CleanMsixState"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="CleanMsixState"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="RegisterLspCategories"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="RegisterLspCategories"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="RemoveRegistryKeyProtections"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="RemoveRegistryKeyProtections"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="UnregisterLspCategories"
|
|
Impersonate="no"
|
|
BinaryRef="wslinstall.dll"
|
|
DllEntry="UnregisterLspCategories"
|
|
Return="check"
|
|
Execute="deferred"
|
|
/>
|
|
|
|
<CustomAction Id="InstallMsix.SetProperty" Return="check" Property="InstallMsix" Value='[DATABASE]' Execute='immediate' />
|
|
<CustomAction Id="CalculateWslSettingsProtocolIds" Impersonate="no" BinaryRef="wslinstall.dll" DllEntry="CalculateWslSettingsProtocolIds" Return="check" Execute='immediate' />
|
|
|
|
<!-- See https://learn.microsoft.com/en-us/windows/win32/msi/examples-of-conditional-statement-syntax -->
|
|
<InstallExecuteSequence>
|
|
<Custom Action="ValidateInstall" After="InstallInitialize" Condition="(not INSTALLED) and (not SKIPVALIDATION = 1)" />
|
|
|
|
<!-- Must run before InstallServices or else we'll fail if wslservice already exists.
|
|
Covers cases where:
|
|
- The MSI package is installed for the first time and the old MSIX needs to be removed
|
|
- The MSI package is uninstalled and the glue MSIX must be removed
|
|
|
|
Must also run before CreateShortcuts since there might be an old MSIX shortcut that conflicts with ours.
|
|
Also, this action must not run during upgrades
|
|
since upgrades start by first uninstalling the package, this isn't run if UPGRADINGPRODUCTCODE is set in the 'removing' MSI process.
|
|
In this path, only the installing MSI process should run this action.
|
|
|
|
We use 'BindImage' since its just before 'CreateShortcuts' in the install sequence
|
|
-->
|
|
<Custom Action="DeprovisionMsix" After="BindImage" Condition='((not INSTALLED) or (REMOVE~="ALL")) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)'/>
|
|
|
|
<!-- We need to remove the MSIX both as user and as system to work around a race condition in MSIX -->
|
|
<Custom Action="RemoveMsixAsUser" After="DeprovisionMsix" Condition='((not INSTALLED) or (REMOVE~="ALL")) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)'/>
|
|
<Custom Action="RemoveMsixAsSystem" After="RemoveMsixAsUser" Condition='((not INSTALLED) or (REMOVE~="ALL")) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)'/>
|
|
|
|
<!-- This needs to run before the MSI logic tries to write the registry or create shortcuts-->
|
|
<Custom Action="CleanMsixState" After="RemoveMsixAsSystem" Condition='((not INSTALLED) or (not REMOVE~="ALL")) and (not UPGRADINGPRODUCTCODE)' />
|
|
|
|
<!-- This is needed to remove the SFGAO_NONENUMERATED flag from the explorer keys, which can prevent the WSL icon from being visible -->
|
|
<Custom Action="CleanExplorerState" Before="WriteRegistryValues" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE)' />
|
|
|
|
<!-- This needs to run before the registry is written since it removes registry protections that prevents MSI from writing to the registry key -->
|
|
<Custom Action="RemoveRegistryKeyProtections" After="CleanExplorerState" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE)' />
|
|
|
|
<!-- Runs during first install and upgrade
|
|
This action must not run if UPGRADINGPRODUCTCODE is set because it should only run during the second sequence
|
|
|
|
Note: versions < 2.0.2 pass REINSTALL=ALL which sets REMOVE=ALL.
|
|
Use WIX_UPGRADE_DETECTED to cover this scenario since it's always set when a previous build is installed.
|
|
-->
|
|
<Custom Action="InstallMsix.SetProperty" After="CleanMsixState" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)' />
|
|
<Custom Action="InstallMsix" After="InstallMsix.SetProperty" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)' />
|
|
<Custom Action="InstallMsixAsUser" After="InstallMsix" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE) and (not SKIPMSIX = 1)' />
|
|
|
|
<!-- This needs to run after the registry is written because this action needs to read the install path -->
|
|
<Custom Action="RegisterLspCategories" After="WriteRegistryValues" Condition='((not REMOVE~="ALL") or WIX_UPGRADE_DETECTED) and (not UPGRADINGPRODUCTCODE) and (not SKIPLSP = 1)' />
|
|
|
|
<!-- This needs to run before the registry is cleared because this action needs to read the install path.
|
|
This actions runs on uninstallation and upgrade. -->
|
|
<Custom Action="UnregisterLspCategories" Before="RemoveRegistryValues" Condition='(REMOVE~="ALL") and (not UPGRADINGPRODUCTCODE) and (not SKIPLSP = 1)' />
|
|
|
|
<?if "${WSL_BUILD_WSL_SETTINGS}" = "true" ?>
|
|
<!-- This needs to run before the registry is written because this action calculates registry key names and values -->
|
|
<Custom Action="CalculateWslSettingsProtocolIds" Before="WriteRegistryValues" Condition='(not REMOVE~="ALL")' />
|
|
<?endif?>
|
|
|
|
<Custom Action="FinalizeInstall" After="PublishFeatures"/>
|
|
|
|
</InstallExecuteSequence>
|
|
|
|
<!-- Don't show a 'Modify' button in settings since there is nothing to modify -->
|
|
<Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />
|
|
<Property Id="ARPSYSTEMCOMPONENT" Value="yes" Secure="yes" />
|
|
|
|
<!-- Setting REINSTALLMODE to AMUS will force all re-installed components to re-install all files, registry keys and shortcuts.
|
|
This is useful during downgrades since components with KeyPath set will not removed if their KeyPath points to valid file / registry key.
|
|
-->
|
|
<Property Id="REINSTALLMODE" Value="AMUS" Secure="yes" />
|
|
|
|
<!-- Force all applications to exit during upgrade.
|
|
See: https://learn.microsoft.com/en-us/windows/win32/msi/msirmshutdown
|
|
-->
|
|
<Property Id="MSIRMSHUTDOWN" Value="0" Secure="yes" />
|
|
</Package>
|
|
</Wix>
|