⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.h

📁 虚幻的再开发程序包源代码
💻 H
📖 第 1 页 / 共 2 页
字号:

class USetupProduct : public USetupObject
{
	DECLARE_CLASS(USetupProduct,USetupObject,CLASS_Config|CLASS_Localized|CLASS_PerObjectConfig)

	// Data variables.
	FStringNoInit Product, Version; // Per install.
	FStringNoInit OldVersionInstallCheck, OldVersionNumber; //oldver Per install.
	FStringNoInit LocalProduct, Developer, ProductURL, VersionURL, DeveloperURL; // Localized.

	// Functions.
	void StaticConstructor()
	{
		guard(USetupProduct::StaticConstructor);

		new(GetClass(),TEXT("Product"               ),RF_Public)UStrProperty(CPP_PROPERTY(Product               ), TEXT(""), CPF_Config   );
		new(GetClass(),TEXT("Version"               ),RF_Public)UStrProperty(CPP_PROPERTY(Version               ), TEXT(""), CPF_Config   );
		new(GetClass(),TEXT("OldVersionInstallCheck"),RF_Public)UStrProperty(CPP_PROPERTY(OldVersionInstallCheck), TEXT(""), CPF_Config   );
		new(GetClass(),TEXT("OldVersionNumber"      ),RF_Public)UStrProperty(CPP_PROPERTY(OldVersionNumber      ), TEXT(""), CPF_Config   );
		new(GetClass(),TEXT("LocalProduct"          ),RF_Public)UStrProperty(CPP_PROPERTY(LocalProduct          ), TEXT(""), CPF_Localized);
		new(GetClass(),TEXT("Developer"             ),RF_Public)UStrProperty(CPP_PROPERTY(Developer             ), TEXT(""), CPF_Localized);
		new(GetClass(),TEXT("ProductURL"            ),RF_Public)UStrProperty(CPP_PROPERTY(ProductURL            ), TEXT(""), CPF_Localized);
		new(GetClass(),TEXT("VersionURL"            ),RF_Public)UStrProperty(CPP_PROPERTY(VersionURL            ), TEXT(""), CPF_Localized);
		new(GetClass(),TEXT("DeveloperURL"          ),RF_Public)UStrProperty(CPP_PROPERTY(DeveloperURL          ), TEXT(""), CPF_Localized);

		unguard;
	}
};

/*-----------------------------------------------------------------------------
	USetupGroup.
-----------------------------------------------------------------------------*/

class USetupGroup : public USetupObject
{
	DECLARE_CLASS(USetupGroup,USetupObject,CLASS_Config|CLASS_Localized|CLASS_PerObjectConfig)

	// Data variables.
	static USetupDefinition* Manager;
	FStringNoInit Caption, Description; // Localized.
	FStringNoInit MasterPath; // Per install.
	UBOOL Optional, Visible, Selected; // Per install.
	TArray<FString> File, Copy, Group, Folder, Backup, Delete, Ini, SaveIni, Requires; // Per install.
	TArray<USetupGroup*> Subgroups; // In memory only.

	// Internal variables.
	TMap<FString,FString> UninstallLog;

	// Functions.
	void StaticConstructor()
	{
		guard(USetupProduct::StaticConstructor);
		UArrayProperty* P;

		  new(GetClass(),TEXT("Caption"        ),RF_Public)UStrProperty  (CPP_PROPERTY(Caption    ), TEXT(""), CPF_Config|CPF_Localized);
		  new(GetClass(),TEXT("Description"    ),RF_Public)UStrProperty  (CPP_PROPERTY(Description), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("MasterPath"     ),RF_Public)UStrProperty  (CPP_PROPERTY(MasterPath ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("Optional"       ),RF_Public)UBoolProperty (CPP_PROPERTY(Optional   ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("Visible"        ),RF_Public)UBoolProperty (CPP_PROPERTY(Visible    ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("Selected"       ),RF_Public)UBoolProperty (CPP_PROPERTY(Selected   ), TEXT(""), CPF_Config   );
		P=new(GetClass(),TEXT("File"           ),RF_Public)UArrayProperty(CPP_PROPERTY(File       ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Copy"           ),RF_Public)UArrayProperty(CPP_PROPERTY(Copy       ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Group"          ),RF_Public)UArrayProperty(CPP_PROPERTY(Group      ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Folder"         ),RF_Public)UArrayProperty(CPP_PROPERTY(Folder     ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Backup"         ),RF_Public)UArrayProperty(CPP_PROPERTY(Backup     ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Delete"         ),RF_Public)UArrayProperty(CPP_PROPERTY(Delete     ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Ini"            ),RF_Public)UArrayProperty(CPP_PROPERTY(Ini        ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("SaveIni"        ),RF_Public)UArrayProperty(CPP_PROPERTY(SaveIni    ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;
		P=new(GetClass(),TEXT("Requires"       ),RF_Public)UArrayProperty(CPP_PROPERTY(Requires   ), TEXT(""), CPF_Config   );
        P->Inner = new(P,TEXT("StrProperty0"   ),RF_Public)UStrProperty;

		Optional = 0;
		Visible  = 0;
		Selected = 1;

		unguard;
	}
	USetupGroup();
	virtual SQWORD SpaceRequired();
};

/*-----------------------------------------------------------------------------
	USetupDefinition.
-----------------------------------------------------------------------------*/

struct FSavedIni
{
	FString File, Section, Key, SavedValue;
	FSavedIni( FString InFile, FString InSection, FString InKey, FString InSavedValue )
	: File(InFile), Section(InSection), Key(InKey), SavedValue(InSavedValue)
	{}
};

class USetupDefinition : public USetupProduct
{
	DECLARE_CLASS(USetupDefinition,USetupProduct,CLASS_Config|CLASS_Localized|CLASS_PerObjectConfig)

	// Per-product info.
	UBOOL					Patch;
	UBOOL					CdAutoPlay;
	UBOOL					IsMasterProduct;
	FStringNoInit			Language;
	FStringNoInit			Exe;
	FStringNoInit			PatchCdCheck;
	FStringNoInit			MasterProduct;
	TArray<FString>			Requires;

	// Per-product, per-language info.
	FStringNoInit			DefaultFolder;
	FStringNoInit			License, ReadMe, Logo;
	FStringNoInit			SetupWindowTitle;
	FStringNoInit			AutoplayWindowTitle;

	// Internal variables.
	TArray<USetupGroup*>	UninstallComponents;
	USetupGroup*			RootGroup;
	FString					ConfigFile;
	FStringNoInit			DestPath;
	FStringNoInit			RefPath;
	FStringNoInit			SrcPath;
	FStringNoInit			CdOk;
	FStringNoInit			RegistryFolder;
	FStringNoInit			RegistryVersion;
	FStringNoInit			SetupIniFile;
	UBOOL					MustRestart;
	UBOOL					Exists;
	UBOOL					FolderExists;
	UBOOL					AnyRef;
	UBOOL					MustReboot;
	UBOOL					Uninstalling;
	UBOOL					NoRun;
	UBOOL					Manifest;
	INT						UninstallTotal;
	INT						UninstallCount;
	SQWORD					RequiredSpace;
	SQWORD					TotalBytes;
	SQWORD					RunningBytes;
	TArray<FSavedIni>		SavedIni;
	TMap<FString,FString>	RefCounts;

	// Interface.
	void StaticConstructor()
	{
		guard(USetupDefinition::StaticConstructor);
		UArrayProperty* P;

		  new(GetClass(),TEXT("Patch"              ),RF_Public)UBoolProperty (CPP_PROPERTY(Patch              ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("CdAutoPlay"         ),RF_Public)UBoolProperty (CPP_PROPERTY(CdAutoPlay         ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("IsMasterProduct"    ),RF_Public)UBoolProperty (CPP_PROPERTY(IsMasterProduct    ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("MasterProduct"      ),RF_Public)UStrProperty  (CPP_PROPERTY(MasterProduct      ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("Language"           ),RF_Public)UStrProperty  (CPP_PROPERTY(Language           ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("Exe"                ),RF_Public)UStrProperty  (CPP_PROPERTY(Exe                ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("PatchCdCheck"       ),RF_Public)UBoolProperty (CPP_PROPERTY(PatchCdCheck       ), TEXT(""), CPF_Config   );
		  new(GetClass(),TEXT("DefaultFolder"      ),RF_Public)UStrProperty  (CPP_PROPERTY(DefaultFolder      ), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("License"            ),RF_Public)UStrProperty  (CPP_PROPERTY(License            ), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("ReadMe"             ),RF_Public)UStrProperty  (CPP_PROPERTY(ReadMe             ), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("Logo"               ),RF_Public)UStrProperty  (CPP_PROPERTY(Logo               ), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("SetupWindowTitle"   ),RF_Public)UStrProperty  (CPP_PROPERTY(SetupWindowTitle   ), TEXT(""), CPF_Localized);
		  new(GetClass(),TEXT("AutoplayWindowTitle"),RF_Public)UStrProperty  (CPP_PROPERTY(AutoplayWindowTitle), TEXT(""), CPF_Localized);
		P=new(GetClass(),TEXT("Requires"           ),RF_Public)UArrayProperty(CPP_PROPERTY(Requires          ), TEXT(""), CPF_Config   );
		P->Inner = new(P,TEXT("StrProperty0"       ),RF_Public)UStrProperty;

		Language=TEXT("int");

		unguard;
	}
	USetupDefinition();
	virtual void Init();
 	virtual UBOOL LocateSourceFile( FString& Src );
	void Reformat( FString& Msg, TMap<FString,FString>* Map );
	virtual FString Format( FString Msg, const TCHAR* Other=NULL );
	virtual INT UpdateRefCount( const TCHAR* Key, const TCHAR* Value, INT Inc );
	virtual void UninstallLogAdd( const TCHAR* Key, const TCHAR* Value, UBOOL Unique, UBOOL RefLog );
	virtual void LanguageChange();
	virtual FString GetFullRef( const FString RefFile );
	virtual void DidCancel();
	virtual void InstallTree( const TCHAR* Action, FInstallPoll* Poll, void (USetupDefinition::*Process)( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll ), USetupGroup* SetupGroup=NULL, UBOOL Selected=1 );
	virtual void UninstallTree( const TCHAR* Action, FInstallPoll* Poll, void (USetupDefinition::*Process)( FString Key, FString Value, FInstallPoll* Poll ) );
	virtual void SetupFormatStrings();
	virtual void BeginSteps();
	virtual void EndSteps();
	virtual void DoInstallSteps( FInstallPoll* Poll );
	virtual void DoUninstallSteps( FInstallPoll* Poll );
	virtual void PreExit();
	virtual UBOOL GetRegisteredProductFolder( FString Product, FString& Folder );
	virtual void PerformUninstallCopy();
	virtual void CreateRootGroup();
	virtual UBOOL CheckRequirement( FString Folder, USetupProduct* RequiredProduct, FString& FailMessage );
	virtual UBOOL CheckAllRequirements( FString Folder, USetupProduct*& FailedRequiredProduct, FString& FailMessage );

	// Installation steps.
	virtual void ProcessCheckRef( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );
	virtual void ProcessVerifyCd( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );
	virtual void ProcessPreCopy( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );
	virtual void ProcessCopy( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );
	virtual void ProcessExtra( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );
	virtual void ProcessPostCopy( FString Key, FString Value, UBOOL Selected, FInstallPoll* Poll );

	// Uninstall steps.
	virtual void ProcessUninstallCountTotal( FString Key, FString Value, FInstallPoll* Poll );
	virtual void ProcessUninstallRemove( FString Key, FString Value, FInstallPoll* Poll );
};

/*-----------------------------------------------------------------------------
	The End.
-----------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -