Rework solution structure to allow more types of library projects (#196)

* Rename avalonia & wpf samples

* Rename rest of samples

* fix sample readme

* Fix compat util tests

* rename / move all src projects

* remove package lock files and move libC# again

* Add rust lib and cargo workspace

* Replace locksmith lib with new filelocksmith-rs library

* Deprecated type

* fix setup compile

* Use thiserror for error handling

* Rename some enums and formatting

* Add missing SHA256

* wip c++ library

* cpp wip

* alphabetize readme

* Try to get build working again

* Fix some conditionally compiled bits

* cross config should be in workspace root

* Fix PathHelper for new rust target dir

* Missed one old path to velopack.csproj

* remove obsolete coverage code

* testawareapp.exe no longer exists
This commit is contained in:
Caelan
2024-08-06 22:56:40 +01:00
committed by GitHub
parent 7071d20292
commit 3128d34b14
547 changed files with 11592 additions and 8464 deletions

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectName>UnityMonoSample</ProjectName>
<ScriptingBackend>mono</ScriptingBackend>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,27 @@
#include "PrecompiledHeader.h"
#include "..\UnityPlayerStub\Exports.h"
//for Velopack
#include "..\Velopack.hpp"
#include "Windows.h"
#include <shellapi.h>
//for Velopack
// Hint that the discrete gpu should be enabled on optimus/enduro systems
// NVIDIA docs: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf
// AMD forum post: http://devgurus.amd.com/thread/169965
extern "C"
{
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
{
//for Velopack
int pNumArgs = 0;
wchar_t** args = CommandLineToArgvW(lpCmdLine, &pNumArgs);
Velopack::startup(args, pNumArgs);
//for Velopack
return UnityMain(hInstance, hPrevInstance, lpCmdLine, nShowCmd);
}

View File

@@ -0,0 +1 @@
#include "PrecompiledHeader.h"

View File

@@ -0,0 +1,6 @@
#pragma once
#define NOMINMAX
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

View File

@@ -0,0 +1,53 @@
// Generated by build script, do not edit!
#ifndef RC_INVOKED
#include "Configuration/IntegerDefinitions.h"
#include "Runtime/Testing/Fakeable.h"
namespace UnityConfig
{
extern const char* const UnityCompany = "Unity Technologies ApS";
extern const char* const UnityCopyright = "(c) 2022 Unity Technologies ApS. All rights reserved.";
extern const bool HardwareStatsEnabled = 1;
extern const char* const BuildRoot = "C:/buildslave/unity/build";
extern const char* const UnityVersion = "2021.3.4f1";
extern const char* const UnityVersionDigits = "2021.3.4";
extern const char* const UnityVersionSuffix = "f1";
extern const UInt32 UnityVersionVer = 2021;
extern const UInt32 UnityVersionMajor = 3;
extern const UInt32 UnityVersionMinor = 4;
extern const bool UnityVersionIsBeta = 0;
extern const char* const UnityVersionUnderHash = "2021.3.4f1_cb45f9cae8b7";
extern const char* const UnityVersionUnderHash_Verbose = "2021.3.4f1_cb45f9cae8b7";
extern const char* const UnityVersionUnderHash_WithParens = "2021.3.4f1 (cb45f9cae8b7)";
// A numeric representation of the version control hash
extern const UInt64 UnityVersionBuild = 13321721;
extern const UInt64 UnityVersionDate = 1653503040;
extern const char* const UnityVersionBranch = "2021.3/staging";
extern const char* const UnityVersionDisplay = "2021.3.4f1";
extern const char* const UnityVersionDisplay_Verbose = "2021.3.4f1.243";
extern const char* const UnityVersionRevision = "cb45f9cae8b7";
// Wide strings
extern const wchar_t* const L_UnityVersionUnderHash_WithParens = L"2021.3.4f1 (cb45f9cae8b7)";
extern const wchar_t* const L_UnityVersion = L"2021.3.4f1";
}
#else // Generated by build script for sole use by the Windows resource compiler, do not use for anything else
#define UNITY_COMPANY "Unity Technologies ApS"
#define UNITY_COPYRIGHT "(c) 2022 Unity Technologies ApS. All rights reserved."
#define UNITY_VERSION_VER 2021
#define UNITY_VERSION_MAJ 3
#define UNITY_VERSION_MIN 4
#define UNITY_IS_BETA 0
#define UNITY_VERSION_UNDER_HASH "2021.3.4f1_cb45f9cae8b7"
#define UNITY_VERSION_PARENS_HASH "2021.3.4f1 (cb45f9cae8b7)"
#define UNITY_VERSION_BLD 13321721
#define UNITY_VERSION_WIN "2021.3.4.13321721"
#endif // !RC_INVOKED

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(SolutionDir)UnityCommon.props" />
<PropertyGroup Label="Globals">
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
<CodeSharingProject>E9D46EAF-A320-49FB-A167-2CBA56F910B2</CodeSharingProject>
<ItemsProjectGuid>{9CC07CB0-D6B5-4B2E-990C-F644CBC7AE58}</ItemsProjectGuid>
<HasSharedItems>true</HasSharedItems>
</PropertyGroup>
<ItemGroup>
<ClInclude Include="$(MSBuildThisFileDirectory)UnityConfiguration.gen.cpp"></ClInclude>
</ItemGroup>
<ItemGroup>
<ProjectCapability Include="SourceItemsFromImports" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,226 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Master|Win32">
<Configuration>Master</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Master|x64">
<Configuration>Master</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterWithLTCG|Win32">
<Configuration>MasterWithLTCG</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterWithLTCG|x64">
<Configuration>MasterWithLTCG</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugServer|Win32">
<Configuration>DebugServer</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterServer|Win32">
<Configuration>MasterServer</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterServer|x64">
<Configuration>MasterServer</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterServerWithLTCG|Win32">
<Configuration>MasterServerWithLTCG</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterServerWithLTCG|x64">
<Configuration>MasterServerWithLTCG</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseServer|Win32">
<Configuration>ReleaseServer</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugServer|x64">
<Configuration>DebugServer</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseServer|x64">
<Configuration>ReleaseServer</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{57571793-BF11-47DB-A9BA-049C9AA938C7}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>$(ProjectName)</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<Choose>
<When Condition="'$(Configuration)'=='DebugServer'">
<PropertyGroup>
<ConfigurationBuildDir>Debug</ConfigurationBuildDir>
</PropertyGroup>
</When>
<When Condition="'$(Configuration)'=='ReleaseServer'">
<PropertyGroup>
<ConfigurationBuildDir>Release</ConfigurationBuildDir>
</PropertyGroup>
</When>
<When Condition="'$(Configuration)'=='MasterServer'">
<PropertyGroup>
<ConfigurationBuildDir>Master</ConfigurationBuildDir>
</PropertyGroup>
</When>
<When Condition="'$(Configuration)'=='MasterServerWithLTCG'">
<PropertyGroup>
<ConfigurationBuildDir>MasterWithLTCG</ConfigurationBuildDir>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<ConfigurationBuildDir>$(Configuration)</ConfigurationBuildDir>
</PropertyGroup>
</Otherwise>
</Choose>
<PropertyGroup Label="UserMacros">
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(ConfigurationBuildDir)\</ArtifactsDir>
<PlayerOutputDir>$(SolutionDir)build\bin\$(PlatformShortName)\$(ConfigurationBuildDir)\</PlayerOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug' OR '$(Configuration)'=='DebugServer'">
<UseDebugLibraries>true</UseDebugLibraries>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'!='Debug' AND '$(Configuration)'!='DebugServer'">
<UseDebugLibraries>false</UseDebugLibraries>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug' OR '$(Configuration)'=='Release' OR '$(Configuration)'=='DebugServer' OR '$(Configuration)'=='ReleaseServer'" Label="Configuration">
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Master' OR '$(Configuration)'=='MasterWithLTCG' OR '$(Configuration)'=='MasterServer' OR '$(Configuration)'=='MasterServerWithLTCG'" Label="Configuration">
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup>
<OutDir>$(PlayerOutputDir)</OutDir>
<IntDir>$(ArtifactsDir)WindowsPlayer\</IntDir>
<GenerateManifest>false</GenerateManifest>
<CommonDefines>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;WIN32;_WINDOWS</CommonDefines>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderFile>PrecompiledHeader.h</PrecompiledHeaderFile>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<SubSystem Condition="'$(Configuration)'=='Debug' OR '$(Configuration)'=='Release' OR '$(Configuration)'=='Master' OR '$(Configuration)'=='MasterWithLTCG'">Windows</SubSystem>
<SubSystem Condition="'$(Configuration)'=='DebugServer' OR '$(Configuration)'=='ReleaseServer' OR '$(Configuration)'=='MasterServer' OR '$(Configuration)'=='MasterServerWithLTCG'">Console</SubSystem>
<EntryPointSymbol Condition="'$(Configuration)'=='DebugServer' OR '$(Configuration)'=='ReleaseServer' OR '$(Configuration)'=='MasterServer' OR '$(Configuration)'=='MasterServerWithLTCG'">wWinMainCRTStartup</EntryPointSymbol>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(TargetName)_$(PlatformShortName)_$(Configuration)_$(ScriptingBackend).pdb</ProgramDatabaseFile>
<AdditionalOptions>"$(ArtifactsDir)UnityPlayerStub\bin\UnityPlayerStub.lib" %(AdditionalOptions)</AdditionalOptions>
<LargeAddressAware>true</LargeAddressAware>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug' OR '$(Configuration)'=='DebugServer'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(CommonDefines);ENABLE_PROFILER=1;DEBUGMODE=1;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdc11</LanguageStandard_C>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='DebugServer|x64'">stdc11</LanguageStandard_C>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdcpp20</LanguageStandard>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='DebugServer|x64'">stdcpp20</LanguageStandard>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'!='Debug' AND '$(Configuration)'!='DebugServer'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release' OR '$(Configuration)'=='ReleaseServer'">
<ClCompile>
<PreprocessorDefinitions>$(CommonDefines);ENABLE_PROFILER=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdc11</LanguageStandard_C>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='ReleaseServer|x64'">stdc11</LanguageStandard_C>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdcpp20</LanguageStandard>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='ReleaseServer|x64'">stdcpp20</LanguageStandard>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Master' OR '$(Configuration)'=='MasterWithLTCG' OR '$(Configuration)'=='MasterServer' OR '$(Configuration)'=='MasterServerWithLTCG'">
<ClCompile>
<PreprocessorDefinitions>$(CommonDefines);NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='Master|x64'">stdc11</LanguageStandard_C>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='MasterServer|x64'">stdc11</LanguageStandard_C>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='MasterServerWithLTCG|x64'">stdc11</LanguageStandard_C>
<LanguageStandard_C Condition="'$(Configuration)|$(Platform)'=='MasterWithLTCG|x64'">stdc11</LanguageStandard_C>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Master|x64'">stdcpp20</LanguageStandard>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='MasterServer|x64'">stdcpp20</LanguageStandard>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='MasterServerWithLTCG|x64'">stdcpp20</LanguageStandard>
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='MasterWithLTCG|x64'">stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\Velopack.cpp" />
<ClCompile Include="Main.cpp" />
<ClCompile Include="PrecompiledHeader.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Velopack.hpp" />
<ClInclude Include="PrecompiledHeader.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="WindowsPlayer.rc">
<AdditionalIncludeDirectories>$(VersionInfoResourceDir)</AdditionalIncludeDirectories>
</ResourceCompile>
<Manifest Include="WindowsPlayer.manifest" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="UnityData.vcxitems" Label="UnityData" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="UnityTechnologies.Unity.UnityPlayer" type="win32"/>
<description>Unity</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32" name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
<!-- From MSDN: Note that Windows XP and Windows Vista ignore this manifest section and it has no impact on them. -->
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</windowsSettings>
</application>
</assembly>

View File

@@ -0,0 +1,81 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_LTH)
LANGUAGE 9, 1
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"#include ""WinPlayerVersion.rc""\0"
END
4 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_APP_ICON ICON "WindowsPlayer.ico"
/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//
1 RT_MANIFEST "WindowsPlayer.manifest"
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "WindowsPlayerVersion.rc"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,30 @@
#include <windows.h>
#include "UnityConfiguration.gen.cpp"
VS_VERSION_INFO VERSIONINFO
FILEVERSION UNITY_VERSION_VER,UNITY_VERSION_MAJ,UNITY_VERSION_MIN,UNITY_VERSION_BLD
PRODUCTVERSION UNITY_VERSION_VER,UNITY_VERSION_MAJ,UNITY_VERSION_MIN,UNITY_VERSION_BLD
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileVersion", UNITY_VERSION_WIN
VALUE "ProductVersion", UNITY_VERSION_WIN
VALUE "Unity Version", UNITY_VERSION_UNDER_HASH
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@@ -0,0 +1,17 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by WindowsPlayer.rc
// Next default values for new objects
//
#define IDI_APP_ICON 103
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,7 @@
#include <wtypes.h>
#include "Exports.h"
int UnityMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPWSTR /*lpCmdLine*/, int /*nShowCmd*/)
{
return 0;
}

View File

@@ -0,0 +1,9 @@
#pragma once
#if BUILDING_PLAYER_DLL
#define UNITY_API __declspec(dllexport)
#else
#define UNITY_API __declspec(dllimport)
#endif
extern "C" UNITY_API int UnityMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd);

View File

@@ -0,0 +1,279 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Master|Win32">
<Configuration>Master</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Master|x64">
<Configuration>Master</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterWithLTCG|Win32">
<Configuration>MasterWithLTCG</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="MasterWithLTCG|x64">
<Configuration>MasterWithLTCG</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9B743A06-56DC-42C2-99B1-B11DE6C02BBD}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>UnityPlayerStub</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Master|Win32' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Master|x64' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Master|Win32' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|Win32'">
<LinkIncremental>false</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Master|x64' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|x64'">
<LinkIncremental>false</LinkIncremental>
<ArtifactsDir>$(SolutionDir)build\obj\$(PlatformShortName)\$(Configuration)\</ArtifactsDir>
<OutDir>$(ArtifactsDir)UnityPlayerStub\bin\</OutDir>
<IntDir>$(ArtifactsDir)UnityPlayerStub\obj\</IntDir>
<TargetName>UnityPlayer</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;WIN32;_DEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;_DEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<MinimalRebuild>false</MinimalRebuild>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;WIN32;NDEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Master|Win32' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;WIN32;NDEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;NDEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Master|x64' OR '$(Configuration)|$(Platform)'=='MasterWithLTCG|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>UNITY_WIN=1;UNITY_STANDALONE=1;UNITY_STANDALONE_WIN=1;BUILDING_PLAYER_DLL=1;NDEBUG;_WINDOWS;_USRDLL;UNITYPLAYERSTUB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>
</SDLCheck>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>No</GenerateDebugInformation>
<ImportLibrary>$(OutDir)UnityPlayerStub.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Exports.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Exports.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,417 @@
//
// INTRODUCTION
//
// This is a library to help developers integrate https://velopack.io into their
// applications. Velopack is an update/installer framework for cross-platform
// desktop applications.
//
// This library is auto-generated using https://github.com/fusionlanguage/fut
// and this source file should not be directly modified.
//
// MIT LICENSE
//
// Copyright (c) 2024 Caelan Sayler
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
// UNICODE SUPPORT NOTES
//
// To keep this library as light as possible, we will try to avoid using ICU4C
// if possible. If Qt is available, we will use its QString class to handle
// Unicode string manipulation. On Windows, we will use the Win32 unicode API.
// If neither of these are available, we will fall back to using ICU4C.
//
// On Windows, for full Unicode support, you will need to set the code page.
// https://learn.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page
//
// If you would like to disable ICU4C and fall back to ASCII-only functions on,
// systems without an alternative implementation, uncomment the following define:
//
// #define VELOPACK_NO_ICU
#ifndef VELOPACK_H_INCLUDED
#define VELOPACK_H_INCLUDED
#include <cstddef>
namespace Velopack
{
#if UNICODE
void startup(wchar_t **args, size_t c_args);
#endif // UNICODE
void startup(char **args, size_t c_args);
}
#endif // VELOPACK_H_INCLUDED
// Generated automatically with "fut". Do not edit.
#pragma once
#include <cstdint>
#include <iostream>
#include <memory>
#include <sstream>
#include <string>
#include <string_view>
#include <unordered_map>
#include <vector>
namespace Velopack
{
enum class JsonNodeType
{
null,
bool_,
array,
object,
number,
string
};
enum class JsonToken
{
none,
curlyOpen,
curlyClose,
squareOpen,
squareClose,
colon,
comma,
string,
number,
bool_,
null
};
class JsonNode;
class JsonParser;
class Platform;
class StringStream;
enum class VelopackAssetType
{
unknown,
full,
delta
};
class VelopackAsset;
class UpdateInfo;
class UpdateManagerSync;
class JsonNode
{
public:
JsonNode() = default;
/**
* Get the type of this node, such as string, object, array, etc.
* You should use this function and then call the corresponding
* AsObject, AsArray, AsString, etc. functions to get the actual
* parsed json information.
*/
JsonNodeType getKind() const;
/**
* Check if the JSON value is null.
*/
bool isNull() const;
/**
* Check if the JSON value is empty - eg. an empty string, array, or object.
*/
bool isEmpty() const;
/**
* Reinterpret a JSON value as an object. Throws exception if the value type was not an object.
*/
const std::unordered_map<std::string, std::shared_ptr<JsonNode>> * asObject() const;
/**
* Reinterpret a JSON value as an array. Throws exception if the value type was not an array.
*/
const std::vector<std::shared_ptr<JsonNode>> * asArray() const;
/**
* Reinterpret a JSON value as a number. Throws exception if the value type was not a double.
*/
double asNumber() const;
/**
* Reinterpret a JSON value as a boolean. Throws exception if the value type was not a boolean.
*/
bool asBool() const;
/**
* Reinterpret a JSON value as a string. Throws exception if the value type was not a string.
*/
std::string_view asString() const;
static std::shared_ptr<JsonNode> parse(std::string_view text);
public:
void initBool(bool value);
void initArray();
void addArrayChild(std::shared_ptr<JsonNode> child);
void initObject();
void addObjectChild(std::string_view key, std::shared_ptr<JsonNode> child);
void initNumber(double value);
void initString(std::string_view value);
private:
JsonNodeType type = JsonNodeType::null;
std::unordered_map<std::string, std::shared_ptr<JsonNode>> objectValue;
std::vector<std::shared_ptr<JsonNode>> arrayValue;
std::string stringValue;
double numberValue;
bool boolValue;
};
class StringStream
{
public:
StringStream() = default;
void clear();
void write(std::string s);
void writeLine(std::string s);
void writeChar(int c);
std::string toString() const;
private:
std::ostringstream builder;
std::ostream * writer;
bool initialised;
void init();
};
class JsonParser
{
public:
JsonParser() = default;
void load(std::string_view text);
bool endReached() const;
std::string readN(int n);
int read();
int peek() const;
bool peekWhitespace() const;
bool peekWordbreak() const;
void eatWhitespace();
std::string readWord();
std::shared_ptr<JsonNode> parseNull();
std::shared_ptr<JsonNode> parseBool();
std::shared_ptr<JsonNode> parseNumber();
std::shared_ptr<JsonNode> parseString();
std::shared_ptr<JsonNode> parseObject();
std::shared_ptr<JsonNode> parseArray();
std::shared_ptr<JsonNode> parseValue();
private:
std::string text{""};
int position = 0;
StringStream builder;
JsonToken peekToken();
};
class Platform
{
public:
static std::string startProcessBlocking(const std::vector<std::string> * command_line);
static void startProcessFireAndForget(const std::vector<std::string> * command_line);
static int getCurrentProcessId();
static std::string getCurrentProcessPath();
static bool fileExists(std::string path);
static bool isInstalled();
static std::string getFusionExePath();
static std::string getUpdateExePath();
static std::string strTrim(std::string str);
static double parseDouble(std::string_view str);
static std::string toLower(std::string_view str);
static std::string toUpper(std::string_view str);
static int parseHex(std::string_view str);
static std::string pathParent(std::string str);
static std::string pathJoin(std::string s1, std::string s2);
static std::string_view pathSeparator();
static bool isWindows();
static bool isLinux();
static bool isOsx();
static std::string getOsName();
static void exit(int code);
private:
Platform() = delete;
static std::string impl_GetFusionExePath();
static std::string impl_GetUpdateExePath();
};
/**
* An individual Velopack asset, could refer to an asset on-disk or in a remote package feed.
*/
class VelopackAsset
{
public:
VelopackAsset() = default;
/**
* Parses a JSON string into a VelopackAsset object.
*/
static std::shared_ptr<VelopackAsset> fromJson(std::string_view json);
/**
* Parses a JSON node into a VelopackAsset object.
*/
static std::shared_ptr<VelopackAsset> fromNode(std::shared_ptr<JsonNode> node);
public:
/**
* The name or Id of the package containing this release.
*/
std::string packageId{""};
/**
* The version of this release.
*/
std::string version{""};
/**
* The type of asset (eg. full or delta).
*/
VelopackAssetType type = VelopackAssetType::unknown;
/**
* The filename of the update package containing this release.
*/
std::string fileName{""};
/**
* The SHA1 checksum of the update package containing this release.
*/
std::string sha1{""};
/**
* The size in bytes of the update package containing this release.
*/
int64_t size = 0;
/**
* The release notes in markdown format, as passed to Velopack when packaging the release.
*/
std::string notesMarkdown{""};
/**
* The release notes in HTML format, transformed from Markdown when packaging the release.
*/
std::string notesHTML{""};
};
/**
* Holds information about the current version and pending updates, such as how many there are, and access to release notes.
*/
class UpdateInfo
{
public:
UpdateInfo() = default;
/**
* Parses a JSON string into an UpdateInfo object.
*/
static std::shared_ptr<UpdateInfo> fromJson(std::string_view json);
public:
/**
* The available version that we are updating to.
*/
std::shared_ptr<VelopackAsset> targetFullRelease;
/**
* True if the update is a version downgrade or lateral move (such as when switching channels to the same version number).
* In this case, only full updates are allowed, and any local packages on disk newer than the downloaded version will be
* deleted.
*/
bool isDowngrade = false;
};
/**
* This class is used to check for updates, download updates, and apply updates. It is a synchronous version of the UpdateManager class.
* This class is not recommended for use in GUI applications, as it will block the main thread, so you may want to use the async
* UpdateManager class instead, if it is supported for your programming language.
*/
class UpdateManagerSync
{
public:
UpdateManagerSync() = default;
/**
* Set the URL or local file path to the update server. This is required before calling CheckForUpdates or DownloadUpdates.
*/
void setUrlOrPath(std::string urlOrPath);
/**
* Allows UpdateManager to update to a version that's lower than the current version (i.e. downgrading).
* This could happen if a release has bugs and was retracted from the release feed, or if you're using
* ExplicitChannel to switch channels to another channel where the latest version on that
* channel is lower than the current version.
*/
void setAllowDowngrade(bool allowDowngrade);
/**
* This option should usually be left null. Overrides the default channel used to fetch updates.
* The default channel will be whatever channel was specified on the command line when building this release.
* For example, if the current release was packaged with '--channel beta', then the default channel will be 'beta'.
* This allows users to automatically receive updates from the same channel they installed from. This options
* allows you to explicitly switch channels, for example if the user wished to switch back to the 'stable' channel
* without having to reinstall the application.
*/
void setExplicitChannel(std::string explicitChannel);
/**
* Returns true if the current app is installed, false otherwise. If the app is not installed, other functions in
* UpdateManager may throw exceptions, so you may want to check this before calling other functions.
*/
bool isInstalled() const;
/**
* Get the currently installed version of the application.
* If the application is not installed, this function will throw an exception.
*/
std::string getCurrentVersion() const;
/**
* This function will check for updates, and return information about the latest
* available release. This function runs synchronously and may take some time to
* complete, depending on the network speed and the number of updates available.
*/
std::shared_ptr<UpdateInfo> checkForUpdates() const;
/**
* Downloads the specified updates to the local app packages directory. If the update contains delta packages and ignoreDeltas=false,
* this method will attempt to unpack and prepare them. If there is no delta update available, or there is an error preparing delta
* packages, this method will fall back to downloading the full version of the update. This function will acquire a global update lock
* so may fail if there is already another update operation in progress.
*/
void downloadUpdates(const VelopackAsset * toDownload) const;
/**
* This will exit your app immediately, apply updates, and then optionally relaunch the app using the specified
* restart arguments. If you need to save state or clean up, you should do that before calling this method.
* The user may be prompted during the update, if the update requires additional frameworks to be installed etc.
*/
void applyUpdatesAndExit(const VelopackAsset * toApply) const;
/**
* This will exit your app immediately, apply updates, and then optionally relaunch the app using the specified
* restart arguments. If you need to save state or clean up, you should do that before calling this method.
* The user may be prompted during the update, if the update requires additional frameworks to be installed etc.
*/
void applyUpdatesAndRestart(const VelopackAsset * toApply, const std::vector<std::string> * restartArgs = nullptr) const;
/**
* This will launch the Velopack updater and tell it to wait for this program to exit gracefully.
* You should then clean up any state and exit your app. The updater will apply updates and then
* optionally restart your app. The updater will only wait for 60 seconds before giving up.
*/
void waitExitThenApplyUpdates(const VelopackAsset * toApply, bool silent, bool restart, const std::vector<std::string> * restartArgs = nullptr) const;
protected:
/**
* Returns the command line arguments to get the current version of the application.
*/
std::vector<std::string> getCurrentVersionCommand() const;
/**
* Returns the command line arguments to check for updates.
*/
std::vector<std::string> getCheckForUpdatesCommand() const;
/**
* Returns the command line arguments to download the specified update.
*/
std::vector<std::string> getDownloadUpdatesCommand(const VelopackAsset * toDownload) const;
/**
* Returns the command line arguments to apply the specified update.
*/
std::vector<std::string> getUpdateApplyCommand(const VelopackAsset * toApply, bool silent, bool restart, bool wait, const std::vector<std::string> * restartArgs = nullptr) const;
/**
* Returns the path to the app's packages directory. This is where updates are downloaded to.
*/
std::string getPackagesDir() const;
private:
bool _allowDowngrade = false;
std::string _explicitChannel{""};
std::string _urlOrPath{""};
};
}