mirror of
https://github.com/nextcloud/desktop.git
synced 2024-12-22 21:50:30 +03:00
06c2fecbe1
creating the registry keys via installer for the current user is not enough to have the feature enabled for all user accounts on a given machine Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
237 lines
12 KiB
XML
237 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
*
|
|
* Copyright (C) by Michael Schuster <michael@schuster.ms>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* for more details.
|
|
*
|
|
-->
|
|
<?include $(sys.CURRENTDIR)OEM.wxi?>
|
|
<?include $(sys.CURRENTDIR)Platform.wxi?>
|
|
|
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
|
|
|
<!--
|
|
When to change the Product GUID:
|
|
https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/
|
|
https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/checking-for-oldies/
|
|
|
|
We change the Product Id for every release, to let up-/downgrading always work.
|
|
But we then should never change the UpgradeCode.
|
|
-->
|
|
<Product Name="$(var.AppName)" Manufacturer="$(var.AppVendor)"
|
|
Id="*"
|
|
UpgradeCode="$(var.UpgradeCode)"
|
|
Language="1033" Codepage="$(var.codepage)" Version="$(var.VerFull)">
|
|
<Package Id="*" Keywords="Installer" Description="$(var.AppName) $(var.VerDesc)" Manufacturer="$(var.AppVendor)"
|
|
InstallerVersion="300" Platform="$(var.Platform)" Languages="1033" Compressed="yes" SummaryCodepage="$(var.codepage)" InstallScope="perMachine" />
|
|
|
|
<!--
|
|
Upgrading: Since we always want to allow up-/downgrade, we don't specify a maximum version, thus
|
|
leading the WiX linker (light.exe) to trigger the following warning:
|
|
warning LGHT1076 : ICE61: This product should remove only older versions of itself. No Maximum version was detected for the current product. (WIX_UPGRADE_DETECTED)
|
|
We suppress the warning: light.exe -sw1076
|
|
|
|
If at some point we want to change this behaviour, read the docs:
|
|
https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/replacing-ourselves/
|
|
https://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/
|
|
-->
|
|
<MajorUpgrade Schedule="afterInstallInitialize" AllowDowngrades="yes" />
|
|
<Property Id="REINSTALLMODE" Value="amus" />
|
|
|
|
<Media Id="1" Cabinet="$(var.AppShortName).cab" EmbedCab="yes" />
|
|
|
|
<!-- If already installed: Use previously chosen path (use 32-bit registry like NSIS does) -->
|
|
<Property Id="INSTALLDIR">
|
|
<RegistrySearch Id="RegistryInstallDir" Type="raw" Root="HKLM" Key="Software\$(var.AppVendor)\$(var.AppName)" Win64="no" />
|
|
</Property>
|
|
|
|
<!-- Detect legacy NSIS installation -->
|
|
<Property Id="NSIS_UNINSTALLEXE">
|
|
<RegistrySearch Id="RegistryLegacyUninstallString" Type="file" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\$(var.AppName)" Name="UninstallString" Win64="no">
|
|
<FileSearch Id="LegacyUninstallFileName" Name="Uninstall.exe"/>
|
|
</RegistrySearch>
|
|
</Property>
|
|
|
|
<!-- Property to disable update checks -->
|
|
<Property Id="SKIPAUTOUPDATE" Value="0" />
|
|
|
|
<!-- Quit / restart application -->
|
|
<util:RestartResource ProcessName="$(var.AppExe)" />
|
|
|
|
<!-- Helper DLL Custom Actions -->
|
|
<SetProperty Id="ExecNsisUninstaller" Value=""$(var.AppShortName)" "[NSIS_UNINSTALLEXE]"" Before="ExecNsisUninstaller" Sequence="execute" />
|
|
<SetProperty Id="RemoveNavigationPaneEntries" Value=""$(var.AppName)"" Before="RemoveNavigationPaneEntries" Sequence="execute" />
|
|
|
|
<InstallExecuteSequence>
|
|
<!-- Install: Remove previous NSIS installation, if detected -->
|
|
<Custom Action="ExecNsisUninstaller" Before="ProcessComponents">NSIS_UNINSTALLEXE AND NOT Installed</Custom>
|
|
|
|
<!-- Uninstall: Remove sync folders from Explorer's Navigation Pane, only effective for the current user (home users) -->
|
|
<Custom Action="RemoveNavigationPaneEntries" After="RemoveFiles">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
|
|
|
|
<!-- Uninstall: Cleanup the Registry -->
|
|
<Custom Action="RegistryCleanupCustomAction" After="RemoveFiles">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
|
|
|
|
<!-- Schedule Reboot for the Shell Extensions (in silent installation mode only, or if SCHEDULE_REBOOT argument is set-->
|
|
<ScheduleReboot After="InstallFinalize">(SCHEDULE_REBOOT=1) OR NOT (UILevel=2)</ScheduleReboot>
|
|
</InstallExecuteSequence>
|
|
|
|
<!-- "Add or Remove" Programs Entries -->
|
|
<Property Id="APPNAME">$(var.AppName)</Property>
|
|
<Property Id="ARPPRODUCTICON">$(var.AppIcon)</Property>
|
|
<Property Id="ARPHELPLINK">$(var.AppHelpLink)</Property>
|
|
<Property Id="ARPURLINFOABOUT">$(var.AppInfoLink)</Property>
|
|
|
|
<!-- https://www.firegiant.com/wix/tutorial/com-expression-syntax-miscellanea/add-or-remove-programs-entries/ -->
|
|
<!--
|
|
<Property Id="ARPNOMODIFY">1</Property>
|
|
<Property Id="ARPNOREPAIR">1</Property>
|
|
-->
|
|
|
|
<!-- App icon -->
|
|
<Icon Id="$(var.AppIcon)" SourceFile="$(var.HarvestAppDir)\$(var.AppIcon)" />
|
|
|
|
<!-- Custom bitmaps -->
|
|
<WixVariable Id="WixUIBannerBmp" Value="$(var.UIBannerBmp)" />
|
|
<WixVariable Id="WixUIDialogBmp" Value="$(var.UIDialogBmp)" />
|
|
|
|
<!-- Custom icons -->
|
|
<!-- https://wixtoolset.org/documentation/manual/v3/wixui/wixui_customizations.html -->
|
|
<!--
|
|
<WixVariable Id="WixUIExclamationIco" Value="ui\Exclam.ico" />
|
|
<WixVariable Id="WixUIInfoIco" Value="ui\Info.ico" />
|
|
<WixVariable Id="WixUINewIco" Value="ui\New.ico" />
|
|
<WixVariable Id="WixUIUpIco" Value="ui\Up.ico" />
|
|
-->
|
|
|
|
<!-- Custom license -->
|
|
<!--
|
|
<WixVariable Id="WixUILicenseRtf" Value="$(var.AppLicenseRtf)" />
|
|
-->
|
|
|
|
<UI>
|
|
<UIRef Id="WixUI_FeatureTree" />
|
|
<UIRef Id="WixUI_ErrorProgressText" />
|
|
|
|
<!-- Skip the license page -->
|
|
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg" Order="3">1</Publish>
|
|
<!-- Skip the page on the way back too -->
|
|
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">1</Publish>
|
|
|
|
<!-- https://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html -->
|
|
<Publish Dialog="ExitDialog"
|
|
Control="Finish"
|
|
Event="DoAction"
|
|
Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
|
|
|
|
<ProgressText Action="ExecNsisUninstaller">Removing previous installation</ProgressText>
|
|
<ProgressText Action="KillProcess">Trying to terminate application process of previous installation</ProgressText>
|
|
<ProgressText Action="RemoveNavigationPaneEntries">Removing sync folders from Explorer's Navigation Pane</ProgressText>
|
|
</UI>
|
|
|
|
<!-- "Launch" checkbox -->
|
|
<Property Id="WixShellExecTarget" Value="[#MainExecutable]" />
|
|
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
|
|
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.AppName)" />
|
|
<SetProperty Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" Before="CostInitialize">NOT (LAUNCH=0)</SetProperty>
|
|
|
|
<!-- Components -->
|
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
|
<Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
|
|
<Directory Id="INSTALLDIR" Name="$(var.AppName)">
|
|
<!-- Shell Extensions -->
|
|
<Directory Id="ShellExtDir" />
|
|
</Directory>
|
|
</Directory>
|
|
|
|
<Directory Id="ProgramMenuFolder" Name="Programs">
|
|
<!-- Start Menu Shortcut -->
|
|
<Component Id="StartMenuIcon" Guid="*" Win64="$(var.PlatformWin64)">
|
|
<Shortcut Id="StartMenu" Name="$(var.AppName)" Target="[INSTALLDIR]$(var.AppExe)" WorkingDirectory="INSTALLDIR" Icon="$(var.AppIcon)" IconIndex="0" Advertise="no" />
|
|
<RegistryValue Root="HKCU" Key="Software\$(var.AppVendor)\$(var.AppName)" Name="installedStartMenuShortcut" Type="integer" Value="1" KeyPath="yes"/>
|
|
</Component>
|
|
</Directory>
|
|
|
|
<Directory Id="DesktopFolder" Name="Desktop">
|
|
<!-- Desktop Shortcut -->
|
|
<Component Id="DesktopIcon" Guid="*" Win64="$(var.PlatformWin64)">
|
|
<Shortcut Id="Desktop" Name="$(var.AppName)" Target="[INSTALLDIR]$(var.AppExe)" WorkingDirectory="INSTALLDIR" Icon="$(var.AppIcon)" IconIndex="0" Advertise="no" />
|
|
<RegistryValue Root="HKCU" Key="Software\$(var.AppVendor)\$(var.AppName)" Name="installedDesktopShortcut" Type="integer" Value="1" KeyPath="yes"/>
|
|
</Component>
|
|
</Directory>
|
|
</Directory>
|
|
|
|
<DirectoryRef Id="TARGETDIR">
|
|
<!-- Version numbers used to detect existing installation (use 32-bit registry like NSIS does) -->
|
|
<Component Id="RegistryVersionInfo" Guid="*" Win64="no">
|
|
<RegistryKey Root="HKLM" Key="Software\$(var.AppVendor)\$(var.AppName)" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
|
<RegistryValue Type="string" Value="[INSTALLDIR]" />
|
|
<RegistryValue Type="integer" Name="VersionMajor" Value="$(var.VerMajor)" />
|
|
<RegistryValue Type="integer" Name="VersionMinor" Value="$(var.VerMinor)" />
|
|
<RegistryValue Type="integer" Name="VersionRevision" Value="$(var.VerRevision)" />
|
|
<RegistryValue Type="integer" Name="VersionBuild" Value="$(var.VerBuild)" />
|
|
|
|
<!-- Save MSI ProductCode to allow being uninstalled by custom tools -->
|
|
<RegistryValue Type="string" Name="InstallerProductCode" Value="[ProductCode]" />
|
|
</RegistryKey>
|
|
</Component>
|
|
|
|
<!-- Platform bitness-dependent settings -->
|
|
<Component Id="RegistryDefaultSettings" Guid="*" Win64="$(var.PlatformWin64)">
|
|
<RegistryKey Root="HKLM" Key="Software\$(var.AppVendor)\$(var.AppName)">
|
|
<!-- Property to disable update checks -->
|
|
<RegistryValue Type="integer" Name="skipUpdateCheck" Value="[SKIPAUTOUPDATE]" />
|
|
</RegistryKey>
|
|
</Component>
|
|
<!-- Register URI handler -->
|
|
<Component Id="RegistryUriHandler" Guid="*" Win64="$(var.PlatformWin64)">
|
|
<RegistryKey Root="HKLM" Key="Software\Classes\$(var.AppCommandOpenUrlScheme)" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
|
<RegistryValue Type="string" Value="URL:$(var.AppName) Protocol" />
|
|
<RegistryValue Type="string" Name="URL Protocol" Value="" />
|
|
</RegistryKey>
|
|
<RegistryKey Root="HKLM" Key="Software\Classes\$(var.AppCommandOpenUrlScheme)\DefaultIcon" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
|
<RegistryValue Type="string" Value="[INSTALLDIR]$(var.AppExe)" />
|
|
</RegistryKey>
|
|
<RegistryKey Root="HKLM" Key="Software\Classes\$(var.AppCommandOpenUrlScheme)\shell\open\command" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
|
<RegistryValue Type="string" Value=""[INSTALLDIR]$(var.AppExe)" "%1"" />
|
|
</RegistryKey>
|
|
</Component>
|
|
</DirectoryRef>
|
|
|
|
<!-- Features -->
|
|
<Feature Id="Client" Title="$(var.AppName) $(var.PlatformBitness)" Display="collapse" Absent="disallow" ConfigurableDirectory="INSTALLDIR"
|
|
Description="$(var.AppName) $(var.VerDesc)">
|
|
<ComponentGroupRef Id="ClientFiles" />
|
|
|
|
<ComponentRef Id="RegistryVersionInfo" />
|
|
<ComponentRef Id="RegistryDefaultSettings" />
|
|
<ComponentRef Id="RegistryUriHandler" />
|
|
|
|
<Feature Id="ShellExtensions" Title="Integration for Windows Explorer"
|
|
Description="This feature requires a reboot." >
|
|
<ComponentGroupRef Id="ShellExtensions" />
|
|
|
|
<Condition Level="0">(NO_SHELL_EXTENSIONS=1)</Condition>
|
|
</Feature>
|
|
|
|
<Feature Id="StartMenuShortcuts" Title="Start Menu Shortcut">
|
|
<ComponentRef Id="StartMenuIcon" />
|
|
<Condition Level="0">(NO_START_MENU_SHORTCUTS=1)</Condition>
|
|
</Feature>
|
|
|
|
<Feature Id="DesktopShortcut" Title="Desktop Shortcut">
|
|
<ComponentRef Id="DesktopIcon" />
|
|
<Condition Level="0">(NO_DESKTOP_SHORTCUT=1)</Condition>
|
|
</Feature>
|
|
</Feature>
|
|
</Product>
|
|
</Wix>
|