📄 setup.h
字号:
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 + -