Windows MSI: Add MSI scripts and UI resources
Uses CMake to generate and install all required files in the "msi/" directory. Signed-off-by: Michael Schuster <michael@schuster.ms>
This commit is contained in:
parent
f321cd8ae6
commit
a9014f9852
|
@ -0,0 +1,25 @@
|
|||
if(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
set(MSI_BUILD_ARCH x86)
|
||||
else()
|
||||
set(MSI_BUILD_ARCH x64)
|
||||
endif()
|
||||
|
||||
string(SUBSTRING ${GIT_SHA1} 0 7 GIT_REVISION)
|
||||
|
||||
set(VERSION "${MIRALL_VERSION_MAJOR}.${MIRALL_VERSION_MINOR}.${MIRALL_VERSION_PATCH}.${MIRALL_VERSION_BUILD}")
|
||||
|
||||
set(MSI_INSTALLER_FILENAME "${APPLICATION_SHORTNAME}-${VERSION}-${MSI_BUILD_ARCH}.msi")
|
||||
|
||||
configure_file(OEM.wxi.in ${CMAKE_CURRENT_BINARY_DIR}/OEM.wxi)
|
||||
configure_file(collect-transform.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/collect-transform.xsl)
|
||||
configure_file(make-msi.bat.in ${CMAKE_CURRENT_BINARY_DIR}/make-msi.bat)
|
||||
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/OEM.wxi
|
||||
${CMAKE_CURRENT_BINARY_DIR}/collect-transform.xsl
|
||||
${CMAKE_CURRENT_BINARY_DIR}/make-msi.bat
|
||||
Platform.wxi
|
||||
Nextcloud.wxs
|
||||
gui/banner.bmp
|
||||
gui/dialog.bmp
|
||||
DESTINATION msi/)
|
|
@ -0,0 +1,207 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
*
|
||||
* Copyright (C) by Michael Schuster <michael.schuster@nextcloud.com>
|
||||
*
|
||||
* 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" />
|
||||
|
||||
<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">
|
||||
<DirectorySearch Id="LegacyUninstallVersion" Path="[INSTALLDIR]">
|
||||
<FileSearch Name="Uninstall.exe" />
|
||||
</DirectorySearch>
|
||||
</Property>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
<!-- Schedule Reboot for the Shell Extensions -->
|
||||
<ScheduleReboot After="InstallFinalize">NOT (DO_NOT_SCHEDULE_REBOOT=1)</ScheduleReboot>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- "Add or Remove" Programs Entries -->
|
||||
<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" Name="shellext" />
|
||||
</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">
|
||||
<Component Id="RegistryEntries" Guid="*" Win64="no">
|
||||
<!-- Version numbers used to detect existing installation (use 32-bit registry like NSIS does) -->
|
||||
<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>
|
||||
</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="RegistryEntries" />
|
||||
|
||||
<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="StartMenuShortcut" 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>
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
*
|
||||
* Copyright (C) by Michael Schuster <michael.schuster@nextcloud.com>
|
||||
*
|
||||
* 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>
|
||||
|
||||
<!-- Changing the Vendor breaks registry (also NSIS) product detection -->
|
||||
<?define AppVendor = "@APPLICATION_VENDOR@" ?>
|
||||
|
||||
<!-- App Defines -->
|
||||
<?define AppName = "@APPLICATION_NAME@" ?>
|
||||
<?define AppShortName = "@APPLICATION_EXECUTABLE@" ?>
|
||||
|
||||
<?define AppIcon = "@APPLICATION_ICON_NAME@.ico" ?>
|
||||
<?define AppExe = "@APPLICATION_EXECUTABLE@.exe" ?>
|
||||
|
||||
<?define AppHelpLink = "https://@APPLICATION_DOMAIN@/" ?>
|
||||
<?define AppInfoLink = "$(var.AppHelpLink)" ?>
|
||||
|
||||
<!-- Custom license: To use it, also remove the "Skip the license page" stuff in the <UI> section
|
||||
and uncomment <WixVariable Id="WixUILicenseRtf"...
|
||||
<?define AppLicenseRtf = "path\License.rtf" ?>
|
||||
-->
|
||||
|
||||
<!-- App Version -->
|
||||
<?define VerMajor = "@MIRALL_VERSION_MAJOR@" ?>
|
||||
<?define VerMinor = "@MIRALL_VERSION_MINOR@" ?>
|
||||
<?define VerRevision = "@MIRALL_VERSION_PATCH@" ?>
|
||||
<?define VerBuild = "@MIRALL_VERSION_BUILD@" ?>
|
||||
<?define VerStd = "$(var.VerMajor).$(var.VerMinor).$(var.VerRevision)" ?>
|
||||
<?define VerFull = "$(var.VerStd).$(var.VerBuild)" ?>
|
||||
|
||||
<?define VerDesc = "@MIRALL_VERSION_STRING@ (Git revision @GIT_REVISION@)" ?>
|
||||
|
||||
<!-- MSI upgrade support -->
|
||||
<?define UpgradeCode = "@WIN_MSI_UPGRADE_CODE@" ?>
|
||||
|
||||
<!-- UI resources -->
|
||||
<?define UIBannerBmp = "banner.bmp" ?>
|
||||
<?define UIDialogBmp = "dialog.bmp" ?>
|
||||
|
||||
</Include>
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
*
|
||||
* Copyright (C) by Michael Schuster <michael.schuster@nextcloud.com>
|
||||
*
|
||||
* 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>
|
||||
|
||||
<!--
|
||||
MSI packages are built either for x86 or x64, we use defines to maintain a single WiX script.
|
||||
|
||||
Some hints:
|
||||
https://www.joyofsetup.com/2010/05/14/working-hard-or-hardly-working/
|
||||
https://stackoverflow.com/questions/18628790/build-wix-3-6-project-targeting-x64
|
||||
https://www.howtobuildsoftware.com/index.php/how-do/1oQ/wix-detect-if-32-or-64-bit-windows-and-define-var
|
||||
-->
|
||||
|
||||
<?if $(var.Platform) = x64 ?>
|
||||
<?define PlatformBitness = "(64-bit)" ?>
|
||||
<?define PlatformWin64 = "yes" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
|
||||
<?else ?>
|
||||
<?define PlatformBitness = "(32-bit)" ?>
|
||||
<?define PlatformWin64 = "no" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
||||
<?endif ?>
|
||||
|
||||
</Include>
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<xsl:output method="xml" indent="yes" />
|
||||
|
||||
<!-- Copy all attributes and elements to the output. -->
|
||||
<xsl:template match="@*|*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*" />
|
||||
<xsl:apply-templates select="*" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Identify MainExecutable -->
|
||||
<xsl:key name="exe-search" match="wix:File[contains(@Source, '@APPLICATION_EXECUTABLE@.exe')]" use="@Id" />
|
||||
<xsl:template match="wix:File[key('exe-search', @Id)]">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*" />
|
||||
<xsl:attribute name="Id">
|
||||
<xsl:text>MainExecutable</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Exclude Shell Extensions -->
|
||||
<xsl:key name="shellext-search" match="wix:Component[contains(wix:File/@Source, 'shellext')]" use="@Id" />
|
||||
<xsl:template match="wix:Component[key('shellext-search', @Id)]" />
|
||||
<xsl:template match="wix:ComponentRef[key('shellext-search', @Id)]" />
|
||||
|
||||
<xsl:key name="shellext-search" match="wix:Directory[contains(@Name, 'shellext')]" use="@Id" />
|
||||
<xsl:template match="wix:Directory[key('shellext-search', @Id)]" />
|
||||
|
||||
<!-- Exclude VC Redist -->
|
||||
<xsl:key name="vc-redist-32-search" match="wix:Component[contains(wix:File/@Source, 'vc_redist.x86.exe')]" use="@Id" />
|
||||
<xsl:template match="wix:Component[key('vc-redist-32-search', @Id)]" />
|
||||
<xsl:template match="wix:ComponentRef[key('vc-redist-32-search', @Id)]" />
|
||||
|
||||
<xsl:key name="vc-redist-64-search" match="wix:Component[contains(wix:File/@Source, 'vc_redist.x64.exe')]" use="@Id" />
|
||||
<xsl:template match="wix:Component[key('vc-redist-64-search', @Id)]" />
|
||||
<xsl:template match="wix:ComponentRef[key('vc-redist-64-search', @Id)]" />
|
||||
</xsl:stylesheet>
|
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 462.18754 54.374996"
|
||||
enable-background="new 0 0 196.6 72"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.0 (4035a4f, 2020-05-01)"
|
||||
sodipodi:docname="banner.svg"
|
||||
width="493"
|
||||
height="58"
|
||||
inkscape:export-filename="/Users/misch/nextcloud/_icon/_msi/banner.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"><metadata
|
||||
id="metadata20"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs18"><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath8812"><circle
|
||||
id="circle8814"
|
||||
cx="95.669289"
|
||||
cy="95.669296"
|
||||
r="79.724197"
|
||||
style="fill:#00080d;fill-opacity:1;stroke-width:1" /></clipPath></defs><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="812"
|
||||
id="namedview16"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.3964178"
|
||||
inkscape:cx="264.97589"
|
||||
inkscape:cy="100.72146"
|
||||
inkscape:current-layer="Layer_1"
|
||||
fit-margin-top="10"
|
||||
fit-margin-left="10"
|
||||
fit-margin-right="10"
|
||||
fit-margin-bottom="10"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:snap-page="true"
|
||||
inkscape:document-rotation="0" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1052"
|
||||
d="m 411.83858,10.876373 c -7.55537,0 -13.95917,5.122046 -15.94393,12.061838 -1.72495,-3.680971 -5.463,-6.259801 -9.76856,-6.259801 -5.92119,0 -10.78856,4.867369 -10.78856,10.78855 0,5.921172 4.86737,10.790763 10.78856,10.790763 4.30556,0 8.04361,-2.580407 9.76856,-6.262024 1.98476,6.94032 8.38856,12.064068 15.94393,12.064068 7.49951,0 13.87065,-5.046471 15.90617,-11.908511 1.75682,3.598038 5.4486,6.106467 9.69302,6.106467 5.92118,0 10.79076,-4.869591 10.79076,-10.790763 0,-5.921181 -4.86958,-10.78855 -10.79076,-10.78855 -4.24442,0 -7.9362,2.506858 -9.69302,6.10425 -2.03552,-6.861503 -8.40666,-11.906287 -15.90617,-11.906287 z m 0,6.333131 c 5.70346,0 10.25968,4.554019 10.25968,10.257456 0,5.703427 -4.55622,10.259672 -10.25968,10.259672 -5.70341,0 -10.25743,-4.556245 -10.25743,-10.259672 0,-5.703437 4.55402,-10.257454 10.25743,-10.257456 z m -25.71249,5.802039 c 2.4988,0 4.45763,1.9566 4.45763,4.455417 0,2.498807 -1.95883,4.457631 -4.45763,4.457631 -2.49882,0 -4.45544,-1.958824 -4.45544,-4.457631 0,-2.498817 1.95662,-4.455417 4.45544,-4.455417 z m 51.31168,0 c 2.49883,0 4.45764,1.9566 4.45764,4.455417 0,2.498807 -1.95883,4.457631 -4.45764,4.457631 -2.49879,0 -4.45541,-1.958824 -4.45541,-4.457631 0,-2.498817 1.95662,-4.455417 4.45541,-4.455417 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0082c9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.56218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:export-filename="Nextcloud Hub logo variants.png"
|
||||
inkscape:export-xdpi="300"
|
||||
inkscape:export-ydpi="300" /></svg>
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 454 KiB |
|
@ -0,0 +1,26 @@
|
|||
@echo off
|
||||
set HarvestAppDir=%~1
|
||||
set BuildArch=@MSI_BUILD_ARCH@
|
||||
|
||||
if "%HarvestAppDir%" == "" (
|
||||
echo "Missing parameter: Please specify file collection source path (HarvestAppDir)."
|
||||
exit 1
|
||||
)
|
||||
|
||||
if "%WIX%" == "" (
|
||||
echo "WiX Toolset path not set (environment variable 'WIX'). Please install the WiX Toolset."
|
||||
exit 1
|
||||
)
|
||||
|
||||
Rem Generate collect.wxs
|
||||
"%WIX%\bin\heat.exe" dir "%HarvestAppDir%" -dr INSTALLDIR -sreg -srd -sfrag -ag -cg ClientFiles -var var.HarvestAppDir -platform='%BuildArch%' -t collect-transform.xsl -out collect.wxs
|
||||
if %ERRORLEVEL% neq 0 exit %ERRORLEVEL%
|
||||
|
||||
Rem Compile en-US (https://www.firegiant.com/wix/tutorial/transforms/morphing-installers/)
|
||||
"%WIX%\bin\candle.exe" -dcodepage=1252 -dPlatform=%BuildArch% -arch %BuildArch% -dHarvestAppDir="%HarvestAppDir%" -ext WixUtilExtension NCMsiHelper.wxs WinShellExt.wxs collect.wxs Nextcloud.wxs
|
||||
if %ERRORLEVEL% neq 0 exit %ERRORLEVEL%
|
||||
|
||||
Rem Link MSI package
|
||||
"%WIX%\bin\light.exe" -sw1076 -ext WixUIExtension -ext WixUtilExtension -cultures:en-us NCMsiHelper.wixobj WinShellExt.wixobj collect.wixobj Nextcloud.wixobj -out "@MSI_INSTALLER_FILENAME@"
|
||||
|
||||
exit %ERRORLEVEL%
|
Loading…
Reference in New Issue