This commit is contained in:
watrabi
2025-09-18 17:55:52 -04:00
commit 977f1ff4b8
15030 changed files with 17324420 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,123 @@
#pragma once
#include "Bootstrapper.h"
#include "ClientInstallerSettings.h"
#include "CountersClient.h"
#include "SharedLauncher.h"
class BootstrapperClient:
public Bootstrapper
{
private:
struct PlayArgs
{
std::string authUrl;
std::string authTicket;
std::string script;
std::string guidName;
std::string hiddenStartEventName;
SharedLauncher::LaunchMode launchMode;
std::string browserTrackerId;
};
boost::scoped_ptr<PlayArgs> playArgs;
std::wstring _regSubPath;
std::wstring _regPath;
std::wstring _versionFileName;
std::wstring _versionGuidName;
std::wstring _protocolHandlerScheme;
int startHour;
int startYear, startMonth, startDay;
int endYear, endMonth, endDay;
ClientInstallerSettings settings;
boost::scoped_ptr<CountersClient> counters;
ComModule proxyModule;
ComModule proxyModule64;
//install steps of Bootstrapper client
void DeployBootstrapper();
void RegisterInstallHost();
void DeployRobloxProxys();
void InstallPlayer();
std::string BuildDateTime(int y, int m, int d);
HRESULT SheduleTaskWinVista();
HRESULT SheduleTaskWinXP();
virtual std::string Type() { return "Client"; };
virtual std::string BinaryType() { return "WindowsPlayer"; }
void deployExtraStudioBootstrapper(std::string exeName, TCHAR *linkName, std::wstring componentId, bool forceDesktopIconCreation, const TCHAR *registryPath);
void deployStudioBetaBootstrapper(bool forceDesktopIconCreation);
void deployRobloxProxy(bool commitData);
void deployNPRobloxProxy(bool commitData);
void registerFirefoxPlugin(const TCHAR* id, bool is64Bits);
void unregisterFirefoxPlugin(const TCHAR* id, bool is64Bits);
virtual std::wstring GetRegistryPath() const;
virtual std::wstring GetRegistrySubPath() const;
virtual const wchar_t* GetProtocolHandlerUrlScheme() const;
virtual const wchar_t* GetVersionFileName() const;
virtual const wchar_t* GetGuidName() const;
virtual const wchar_t* GetStartAppMutexName() const;
virtual const wchar_t* GetBootstrapperMutexName() const;
virtual const wchar_t* GetFriendlyName() const;
std::string GetExpectedExeVersion()const;
virtual void DoInstallApp();
virtual void DoUninstallApp(CRegKey &hk);
virtual std::wstring GetRobloxAppFileName() const;
virtual std::wstring GetBootstrapperFileName() const;
virtual std::wstring GetProductCodeKey() const;
virtual void DeployComponents(bool isUpdating, bool commitData);
virtual void StartRobloxApp(bool fromInstall);
virtual bool IsPlayMode() { return (playArgs != NULL); }
virtual bool HasUnhideGuid() { return (playArgs != NULL && !playArgs->guidName.empty()); }
virtual bool ProcessArg(wchar_t** args, int &pos, int count);
virtual bool ProcessProtocolHandlerArgs(const std::map<std::wstring, std::wstring>& argMap);
protected:
virtual void initialize();
virtual void createDialog();
virtual HRESULT SheduleRobloxUpdater();
virtual HRESULT UninstallRobloxUpdater();
virtual void SetupGoogleAnalytics();
virtual bool ValidateInstalledExeVersion();
virtual bool IsInstalledVersionUptodate();
virtual std::string InfluxDbUrl() { return settings.GetValueInfluxUrl(); }
virtual std::string InfluxDbDatabase() { return settings.GetValueInfluxDatabase(); }
virtual std::string InfluxDbUser() { return settings.GetValueInfluxUser(); }
virtual std::string InfluxDbPassword() { return settings.GetValueInfluxPassword(); }
virtual int InfluxDbReportHundredthsPercentage() { return settings.GetValueInfluxHundredthsPercentage(); }
virtual int InfluxDbInstallHundredthsPercentage() { return settings.GetValueInfluxInstallHundredthsPercentage(); }
virtual void LoadSettings();
virtual bool CanRunBgTask() { return settings.GetValueNeedRunBgTask(); }
virtual bool NeedPreDeployRun();
virtual bool IsPreDeployOn();
virtual void RunPreDeploy();
virtual bool ForceNoDialogMode() { return settings.GetValueForceSilentMode(); }
virtual bool GetLogChromeProtocolFix() { return settings.GetValueLogChromeProtocolFix(); }
virtual bool GetUseNewVersionFetch() { return settings.GetValueUseNewVersionFetch(); }
virtual bool GetUseDataDomain() { return settings.GetValueUseDataDomain(); }
virtual bool CreateEdgeRegistry() { return settings.GetValueCreateEdgeRegistry(); }
virtual bool DeleteEdgeRegistry() { return settings.GetValueDeleteEdgeRegistry(); }
virtual bool ReplaceCdnTxt() { return settings.GetValueReplaceCdnTxt(); }
bool UpdaterActive() { return settings.GetValueNeedInstallBgTask(); }
void checkStudioForUninstall(CRegKey &hk);
void installStudioLauncher(bool isUpdating);
public:
BootstrapperClient(HINSTANCE hInstance);
virtual void RegisterEvent(const TCHAR *eventName);
virtual void FlushEvents();
virtual bool PerModeLoggingEnabled();
virtual bool UseNewCdn();
};
@@ -0,0 +1,618 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="BootstrapperClient"
ProjectGUID="{FD5E0FFA-8A37-4523-AB57-D3363C5A9C2A}"
RootNamespace="BootstrapperClient"
SccProjectName="Perforce Project"
SccLocalPath=".."
SccProvider="MSSCCI:Perforce SCM"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="bin\$(ConfigurationName)"
IntermediateDirectory="obj\$(ConfigurationName)"
ConfigurationType="1"
UseOfATL="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
Description=""
CommandLine=""
AdditionalDependencies=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Bootstrapper;&quot;$(CONTRIB_PATH)\boost_1_55_0\include&quot;;&quot;$(CONTRIB_PATH)\boost_1_50_0\src&quot;;..\..\Win;..\..\ClientShared"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib $(CONTRIB_PATH)\SDK\Lib\taskschd.lib $(CONTRIB_PATH)\SDK\Lib\mstask.lib"
OutputFile="$(OutDir)\RobloxPlayerLauncher.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine=""
ExcludedFromBuild="false"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfATL="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
Description=""
CommandLine=""
AdditionalDependencies=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Bootstrapper;&quot;$(CONTRIB_PATH)\boost_1_55_0\include&quot;;&quot;$(CONTRIB_PATH)\boost_1_50_0\src&quot;;..\..\Win;..\..\ClientShared"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib $(CONTRIB_PATH)\SDK\Lib\taskschd.lib $(CONTRIB_PATH)\SDK\Lib\mstask.lib"
OutputFile="$(OutDir)\RobloxPlayerLauncher.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine=""
ExcludedFromBuild="false"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="bin\$(ConfigurationName)"
IntermediateDirectory="obj\$(ConfigurationName)"
ConfigurationType="1"
UseOfATL="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
Description=""
CommandLine=""
AdditionalDependencies=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="1"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
AdditionalIncludeDirectories="..\Bootstrapper;&quot;$(CONTRIB_PATH)\boost_1_55_0\include&quot;;&quot;$(CONTRIB_PATH)\boost_1_50_0\src&quot;;..\..\Win;..\..\ClientShared"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib $(CONTRIB_PATH)\SDK\Lib\taskschd.lib $(CONTRIB_PATH)\SDK\Lib\mstask.lib"
OutputFile="$(OutDir)\RobloxPlayerLauncher.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine=""
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfATL="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
Description=""
CommandLine=""
AdditionalDependencies=""
Outputs=""
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="1"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
AdditionalIncludeDirectories="..\Bootstrapper;&quot;$(CONTRIB_PATH)\boost_1_55_0\include&quot;;&quot;$(CONTRIB_PATH)\boost_1_50_0\src&quot;;..\..\Win;..\..\ClientShared"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib $(CONTRIB_PATH)\SDK\Lib\taskschd.lib $(CONTRIB_PATH)\SDK\Lib\mstask.lib"
OutputFile="$(OutDir)\RobloxPlayerLauncher.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine=""
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\BootstrapperClient.cpp"
>
</File>
<File
RelativePath=".\ClientInstallerSettings.cpp"
>
</File>
<File
RelativePath=".\ClientProgressDialog.cpp"
>
</File>
<File
RelativePath="..\..\ClientShared\CountersClient.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\Bootstrapper\SettingsLoader.cpp"
>
</File>
<File
RelativePath="..\..\ClientShared\SimpleJSON.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\BootstrapperClient.h"
>
</File>
<File
RelativePath=".\ClientInstallerSettings.h"
>
</File>
<File
RelativePath=".\ClientProgressDialog.h"
>
</File>
<File
RelativePath="..\..\ClientShared\CountersClient.h"
>
</File>
<File
RelativePath="..\Bootstrapper\resource.h"
>
</File>
<File
RelativePath="..\Bootstrapper\SettingsLoader.h"
>
</File>
<File
RelativePath="..\..\ClientShared\SimpleJSON.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
<File
RelativePath=".\targetver.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\Bootstrapper\assets\bitmap1.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\bitmap3.bmp"
>
</File>
<File
RelativePath=".\Bootstrapper.ico"
>
</File>
<File
RelativePath="..\Bootstrapper\Bootstrapper.ico"
>
</File>
<File
RelativePath="..\Bootstrapper\Bootstrapper.rc"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_cancel-ON.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_cancel.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_launchstudio-ON.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_launchstudio.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_ok-ON.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\btn_ok.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\logo_meatball@1x.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\logo_robloxstudio@1x.bmp"
>
</File>
<File
RelativePath=".\assets\logo_robloxstudio@1x.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\txt_backto-ON@1x .bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\txt_backto@1x.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\txt_success-player@1x.bmp"
>
</File>
<File
RelativePath="..\Bootstrapper\assets\txt_success@1x.bmp"
>
</File>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
@@ -0,0 +1,299 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectGuid>{FD5E0FFA-8A37-4523-AB57-D3363C5A9C2A}</ProjectGuid>
<RootNamespace>BootstrapperClient</RootNamespace>
<SccProjectName>Perforce Project</SccProjectName>
<SccLocalPath>..</SccLocalPath>
<SccProvider>MSSCCI:Perforce SCM</SccProvider>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v110</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v110</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>17.0.35913.81</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>bin\$(Configuration)\</OutDir>
<IntDir>obj\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>bin\$(Configuration)\</OutDir>
<IntDir>obj\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
<LibraryPath>$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSDK_LibraryPath_x86);$(CONTRIB_PATH)\boost_1_56_0\lib;</LibraryPath>
<IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);$(CONTRIB_PATH)\boost_1_56_0\stage\lib;</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
<Message />
<Command />
</CustomBuildStep>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\Bootstrapper;$(CONTRIB_PATH)\boost_1_56_0\include;$(CONTRIB_PATH)\boost_1_56_0\src;..\..\Win;..\..\ClientShared;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib;$(CONTRIB_PATH)\SDK\Lib\taskschd.lib;$(CONTRIB_PATH)\SDK\Lib\mstask.lib;$(CONTRIB_PATH)\boost_1_56_0\stage\lib\*;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)RobloxPlayerLauncher.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command />
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<CustomBuildStep>
<Message />
<Command />
</CustomBuildStep>
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\Bootstrapper;$(CONTRIB_PATH)\boost_1_55_0\include;$(CONTRIB_PATH)\boost_1_50_0\src;..\..\Win;..\..\ClientShared;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib;$(CONTRIB_PATH)\SDK\Lib\taskschd.lib;$(CONTRIB_PATH)\SDK\Lib\mstask.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)RobloxPlayerLauncher.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PostBuildEvent>
<Command />
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<CustomBuildStep>
<Message />
<Command />
</CustomBuildStep>
<ClCompile>
<Optimization>MinSpace</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<AdditionalIncludeDirectories>..\Bootstrapper;$(CONTRIB_PATH)\boost_1_56_0\include;$(CONTRIB_PATH)\boost_1_56_0\src;..\..\Win;..\..\ClientShared;%(AdditionalIncludeDirectories);$(CONTRIB_PATH)\boost_1_56_0\stage\lib;</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib;$(CONTRIB_PATH)\SDK\Lib\taskschd.lib;$(CONTRIB_PATH)\SDK\Lib\mstask.lib;$(CONTRIB_PATH)\boost_1_56_0\stage\lib\*;%(AdditionalDependencies);libboost_thread-vc110-mt-s-1_56.lib;libboost_system-vc110-mt-s-1_56.lib;</AdditionalDependencies>
<OutputFile>$(OutDir)RobloxPlayerLauncher.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalLibraryDirectories>$(CONTRIB_PATH)\boost_1_56_0\stage\lib;</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command />
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<CustomBuildStep>
<Message />
<Command />
</CustomBuildStep>
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>MinSpace</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<AdditionalIncludeDirectories>..\Bootstrapper;$(CONTRIB_PATH)\boost_1_55_0\include;$(CONTRIB_PATH)\boost_1_50_0\src;..\..\Win;..\..\ClientShared;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;BOOST_THREAD_BUILD_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>$(CONTRIB_PATH)\SDK\Lib\Iphlpapi.lib;$(CONTRIB_PATH)\SDK\Lib\taskschd.lib;$(CONTRIB_PATH)\SDK\Lib\mstask.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)RobloxPlayerLauncher.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PostBuildEvent>
<Command />
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\ClientShared\CountersClient.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\ClientShared\SimpleJSON.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\Bootstrapper\SettingsLoader.cpp" />
<ClCompile Include="BootstrapperClient.cpp" />
<ClCompile Include="ClientInstallerSettings.cpp" />
<ClCompile Include="ClientProgressDialog.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ClientShared\CountersClient.h" />
<ClInclude Include="..\..\ClientShared\SimpleJSON.h" />
<ClInclude Include="..\Bootstrapper\resource.h" />
<ClInclude Include="..\Bootstrapper\SettingsLoader.h" />
<ClInclude Include="BootstrapperClient.h" />
<ClInclude Include="ClientInstallerSettings.h" />
<ClInclude Include="ClientProgressDialog.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<Image Include="..\Bootstrapper\assets\bitmap1.bmp" />
<Image Include="..\Bootstrapper\assets\bitmap3.bmp" />
<Image Include="..\Bootstrapper\assets\btn_cancel-ON.bmp" />
<Image Include="..\Bootstrapper\assets\btn_cancel.bmp" />
<Image Include="..\Bootstrapper\assets\btn_launchstudio-ON.bmp" />
<Image Include="..\Bootstrapper\assets\btn_launchstudio.bmp" />
<Image Include="..\Bootstrapper\assets\btn_ok-ON.bmp" />
<Image Include="..\Bootstrapper\assets\btn_ok.bmp" />
<Image Include="..\Bootstrapper\assets\logo_meatball%401x.bmp" />
<Image Include="..\Bootstrapper\assets\logo_robloxstudio%401x.bmp" />
<Image Include="..\Bootstrapper\assets\txt_backto%401x.bmp" />
<Image Include="..\Bootstrapper\assets\txt_backto-ON%401x .bmp" />
<Image Include="..\Bootstrapper\assets\txt_success%401x.bmp" />
<Image Include="..\Bootstrapper\assets\txt_success-player%401x.bmp" />
<Image Include="..\Bootstrapper\Bootstrapper.ico" />
<Image Include="assets\logo_robloxstudio%401x.bmp" />
<Image Include="Bootstrapper.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\Bootstrapper\Bootstrapper.rc" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bootstrapper\Bootstrapper.vcxproj">
<Project>{c94de431-40b7-4bbb-9759-e58a58beae17}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="BootstrapperClient.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClientInstallerSettings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClientProgressDialog.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\ClientShared\CountersClient.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\Bootstrapper\SettingsLoader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\ClientShared\SimpleJSON.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="BootstrapperClient.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ClientInstallerSettings.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ClientProgressDialog.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\ClientShared\CountersClient.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\Bootstrapper\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\Bootstrapper\SettingsLoader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\ClientShared\SimpleJSON.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\Bootstrapper\assets\bitmap1.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\bitmap3.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="Bootstrapper.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\Bootstrapper.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_cancel-ON.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_cancel.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_launchstudio-ON.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_launchstudio.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_ok-ON.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\btn_ok.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\logo_meatball%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\logo_robloxstudio%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="assets\logo_robloxstudio%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\txt_backto-ON%401x .bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\txt_backto%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\txt_success-player%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\Bootstrapper\assets\txt_success%401x.bmp">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\Bootstrapper\Bootstrapper.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
</Project>
@@ -0,0 +1,34 @@
#include "stdafx.h"
#include "SimpleJSON.h"
#include "ClientInstallerSettings.h"
DATA_MAP_IMPL_START(ClientInstallerSettings)
IMPL_DATA(NeedInstallBgTask, false);
IMPL_DATA(NeedRunBgTask, false);
IMPL_DATA(IsPreDeployOn, false);
IMPL_DATA(PreVersion, "");
IMPL_DATA(ForceSilentMode, false);
IMPL_DATA(CountersLoad, 0);
IMPL_DATA(BetaPlayerLoad, 100);
IMPL_DATA(PerModeLoggingEnabled, false);
IMPL_DATA(CountersFireImmediately, false);
IMPL_DATA(ExeVersion, "");
IMPL_DATA(GoogleAnalyticsAccountPropertyID, "UA-43420590-15");
IMPL_DATA(ValidateInstalledExeVersion, false);
IMPL_DATA(UseNewCdn, false);
IMPL_DATA(UseNewVersionFetch, false);
IMPL_DATA(CheckIsStudioOutofDate, false);
IMPL_DATA(HttpBoostPostTimeout, 0);
IMPL_DATA(ShowInstallSuccessPrompt, false);
IMPL_DATA(LogChromeProtocolFix, false);
IMPL_DATA(InfluxUrl, "");
IMPL_DATA(InfluxDatabase, "Default");
IMPL_DATA(InfluxUser, "rob");
IMPL_DATA(InfluxPassword, "playfaster");
IMPL_DATA(InfluxHundredthsPercentage, 0);
IMPL_DATA(InfluxInstallHundredthsPercentage, 0);
IMPL_DATA(UseDataDomain, true);
IMPL_DATA(CreateEdgeRegistry, true);
IMPL_DATA(DeleteEdgeRegistry, false);
IMPL_DATA(ReplaceCdnTxt, false);
DATA_MAP_IMPL_END()
@@ -0,0 +1,38 @@
#pragma once
#include "SimpleJSON.h"
class ClientInstallerSettings : public SimpleJSON
{
public:
START_DATA_MAP(ClientInstallerSettings);
DECLARE_DATA_BOOL(NeedInstallBgTask);
DECLARE_DATA_BOOL(NeedRunBgTask);
DECLARE_DATA_BOOL(IsPreDeployOn);
DECLARE_DATA_STRING(PreVersion);
DECLARE_DATA_BOOL(ForceSilentMode);
DECLARE_DATA_INT(CountersLoad);
DECLARE_DATA_INT(BetaPlayerLoad);
DECLARE_DATA_BOOL(PerModeLoggingEnabled);
DECLARE_DATA_BOOL(CountersFireImmediately);
DECLARE_DATA_STRING(ExeVersion);
DECLARE_DATA_STRING(GoogleAnalyticsAccountPropertyID);
DECLARE_DATA_BOOL(ValidateInstalledExeVersion);
DECLARE_DATA_BOOL(UseNewCdn);
DECLARE_DATA_BOOL(UseNewVersionFetch);
DECLARE_DATA_BOOL(CheckIsStudioOutofDate);
DECLARE_DATA_INT(HttpBoostPostTimeout);
DECLARE_DATA_BOOL(ShowInstallSuccessPrompt);
DECLARE_DATA_BOOL(LogChromeProtocolFix);
DECLARE_DATA_STRING(InfluxUrl);
DECLARE_DATA_STRING(InfluxDatabase);
DECLARE_DATA_STRING(InfluxUser);
DECLARE_DATA_STRING(InfluxPassword);
DECLARE_DATA_INT(InfluxHundredthsPercentage);
DECLARE_DATA_INT(InfluxInstallHundredthsPercentage);
DECLARE_DATA_BOOL(UseDataDomain);
DECLARE_DATA_BOOL(CreateEdgeRegistry);
DECLARE_DATA_BOOL(DeleteEdgeRegistry);
DECLARE_DATA_BOOL(ReplaceCdnTxt);
END_DATA_MAP();
};
@@ -0,0 +1,146 @@
#include "StdAfx.h"
#include "ClientProgressDialog.h"
#include <commctrl.h>
#include <WindowsX.h>
WNDPROC ClientOldButtonProc;
LRESULT CALLBACK ClientButtonProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static bool tracking = false;
switch(uMsg)
{
case WM_MOUSEMOVE:
{
if (!tracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize= sizeof(tme);
tme.dwFlags= TME_HOVER | TME_LEAVE;
tme.hwndTrack= hWnd; //handle of window you want the mouse over message for.
tme.dwHoverTime= 50;
tracking = _TrackMouseEvent(&tme);
}
}
break;
case WM_MOUSEHOVER:
{
CClientProgressDialog* dialog = (CClientProgressDialog*)GetWindowLongPtr(hWnd, GWL_USERDATA);
if (dialog->isSuccessPromptShown())
SendMessage(hWnd, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)dialog->getOkBitmap(true));
}
break;
case WM_MOUSELEAVE:
{
CClientProgressDialog* dialog = (CClientProgressDialog*)GetWindowLongPtr(hWnd, GWL_USERDATA);
if (dialog->isSuccessPromptShown())
SendMessage(hWnd, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)dialog->getOkBitmap(false));
tracking = false;
}
break;
case WM_LBUTTONUP:
{
int xPos = GET_X_LPARAM(lParam);
int yPos = GET_Y_LPARAM(lParam);
RECT rect;
GetWindowRect(hWnd, &rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
// make sure we are inside the button
if (xPos < 0 || xPos > width || yPos < 0 || yPos > height)
break;
CClientProgressDialog* dialog = (CClientProgressDialog*)GetWindowLongPtr(hWnd, GWL_USERDATA);
dialog->CloseDialog();
SendMessage(GetParent(hWnd), WM_CLOSE, 0, 0);
}
break;
default:
return CallWindowProc(ClientOldButtonProc, hWnd, uMsg, wParam, lParam);
}
return true;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HBRUSH hbrBackground = CreateSolidBrush(RGB(255, 255, 255));
static CClientProgressDialog* dialog = NULL;
switch (uMsg)
{
case WM_CREATE:
{
CREATESTRUCT *pCreate = reinterpret_cast<CREATESTRUCT*>(lParam);
dialog = static_cast<CClientProgressDialog*>(pCreate->lpCreateParams);
dialog->OnCreate(hwnd);
}
break;
}
if (dialog)
return dialog->WndProc(hwnd, uMsg, wParam, lParam);
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
CClientProgressDialog::CClientProgressDialog(HINSTANCE hInstance, Bootstrapper* bootstrapper) : CProgressDialog(hInstance), bs(bootstrapper)
{
bmpOk = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BTN_OK));
bmpOkOn = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BTN_OK_ON));
}
CClientProgressDialog::~CClientProgressDialog(void)
{
::DeleteObject(bmpOk);
::DeleteObject(bmpOkOn);
}
void CClientProgressDialog::InitDialog()
{
CProgressDialog::InitDialog(WindowProc);
RECT rect;
GetWindowRect(hWndDialog, &rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
// install success message
HBITMAP text = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_CLIENT_TEXT));
hInstallSuccess = CreateWindowEx(0, WC_STATIC, L"", WS_CHILD | SS_BITMAP,
width/2-225, 200, 450, 48,
hWndDialog, NULL, GetModuleHandle(NULL), NULL);
SendMessage(hInstallSuccess, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)text);
// set up "ok" button, start hidden
int bntWidth = 130;
int bntHeight = 44;
hWndBntOk = CreateWindowEx(0, L"Button", L"", WS_CHILD | BS_FLAT | BS_BITMAP,
width/2-bntWidth/2, height - 55, bntWidth, bntHeight, hWndDialog, (HMENU)IDB_BTN_OK, GetModuleHandle(NULL), NULL);
SendMessage(hWndBntOk, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)getOkBitmap(false));
ClientOldButtonProc = (WNDPROC)SetWindowLongPtr(hWndBntOk, GWL_WNDPROC, (LONG) ClientButtonProc);
SetWindowLongPtr(hWndBntOk, GWL_USERDATA, (LONG)this);
}
void CClientProgressDialog::ShowSuccessPrompt()
{
CProgressDialog::ShowSuccessPrompt();
::ShowWindow(hInstallSuccess, SW_SHOWNORMAL);
::ShowWindow(hWndBntOk, SW_SHOWNORMAL);
InvalidateRect(hWndDialog, 0, NULL);
}
HBITMAP CClientProgressDialog::getOkBitmap(bool hover)
{
return hover ? bmpOkOn : bmpOk;
}
@@ -0,0 +1,26 @@
#pragma once
#include "ProgressDialog.h"
class Bootstrapper;
class CClientProgressDialog : public CProgressDialog
{
Bootstrapper* bs;
HWND hInstallSuccess;
HWND hWndBntOk;
HBITMAP bmpOk;
HBITMAP bmpOkOn;
public:
CClientProgressDialog(HINSTANCE hInstance, Bootstrapper* bootstrapper);
virtual ~CClientProgressDialog(void);
void InitDialog();
void ShowSuccessPrompt();
HBITMAP getOkBitmap(bool hover);
};
+55
View File
@@ -0,0 +1,55 @@
========================================================================
WIN32 APPLICATION : BootstrapperClient Project Overview
========================================================================
AppWizard has created this BootstrapperClient application for you.
This file contains a summary of what you will find in each of the files that
make up your BootstrapperClient application.
BootstrapperClient.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
BootstrapperClient.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
AppWizard has created the following resources:
BootstrapperClient.rc
This is a listing of all of the Microsoft Windows resources that the
program uses. It includes the icons, bitmaps, and cursors that are stored
in the RES subdirectory. This file can be directly edited in Microsoft
Visual C++.
Resource.h
This is the standard header file, which defines new resource IDs.
Microsoft Visual C++ reads and updates this file.
BootstrapperClient.ico
This is an icon file, which is used as the application's icon (32x32).
This icon is included by the main resource file BootstrapperClient.rc.
small.ico
This is an icon file, which contains a smaller version (16x16)
of the application's icon. This icon is included by the main resource
file BootstrapperClient.rc.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named BootstrapperClient.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////
+8
View File
@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// BootstrapperClient.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file
+25
View File
@@ -0,0 +1,25 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#include <atlbase.h>
#include <atlstr.h>
// TODO: reference additional headers your program requires here
+12
View File
@@ -0,0 +1,12 @@
#pragma once
// The following macros define the minimum required platform. The minimum required platform
// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
// your application. The macros work by enabling all features available on platform versions up to and
// including the version specified.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.