> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.unity.editor/ks.unity.editor.ksbasepackageupdater-1.md).

# Class ksBasePackageUpdater\<T>

Namespace: [KS.Unity.Editor](/reactor/api-reference/ks.unity.editor.md)\
Assembly: KSUnity-Editor.dll

Base class for checking for updates and prompting users to apply the update to a package. Inherits from [ksSingleton%601](/reactor/api-reference/ks.unity.editor.md#KS_Unity_Editor_ksSingleton_601) so there will only be one instance of each derived class that will survive Unity serialization from play mode and recompiles.

```csharp
public abstract class ksBasePackageUpdater<T> : ksSingleton<T> where T : ksBasePackageUpdater<T>
```

#### Type Parameters

`T`

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† Object â† ScriptableObject â† [ksSingleton\<T>](/reactor/api-reference/ks.unity.editor/ks.unity.editor.kssingleton-1.md) â† [ksBasePackageUpdater\<T>](/reactor/api-reference/ks.unity.editor/ks.unity.editor.ksbasepackageupdater-1.md)

#### Inherited Members

[ksSingleton\<T>.Get()](/reactor/api-reference/ks.unity.editor/ks.unity.editor.kssingleton-1.md#KS_Unity_Editor_ksSingleton_1_Get), [ksSingleton\<T>.Initialize()](/reactor/api-reference/ks.unity.editor/ks.unity.editor.kssingleton-1.md#KS_Unity_Editor_ksSingleton_1_Initialize), [ksSingleton\<T>.Create()](/reactor/api-reference/ks.unity.editor/ks.unity.editor.kssingleton-1.md#KS_Unity_Editor_ksSingleton_1_Create), ScriptableObject.SetDirty(), ScriptableObject.CreateInstance(string), ScriptableObject.CreateInstance(Type), ScriptableObject.CreateInstance\<T>(), Object.GetInstanceID(), Object.GetHashCode(), Object.Equals(object), Object.Instantiate(Object, Vector3, Quaternion), Object.Instantiate(Object, Vector3, Quaternion, Transform), Object.Instantiate(Object), Object.Instantiate(Object, Transform), Object.Instantiate(Object, Transform, bool), Object.Instantiate\<T>(T), Object.Instantiate\<T>(T, Vector3, Quaternion), Object.Instantiate\<T>(T, Vector3, Quaternion, Transform), Object.Instantiate\<T>(T, Transform), Object.Instantiate\<T>(T, Transform, bool), Object.Destroy(Object, float), Object.Destroy(Object), Object.DestroyImmediate(Object, bool), Object.DestroyImmediate(Object), Object.FindObjectsOfType(Type), Object.FindObjectsOfType(Type, bool), Object.FindObjectsByType(Type, FindObjectsSortMode), Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode), Object.DontDestroyOnLoad(Object), Object.DestroyObject(Object, float), Object.DestroyObject(Object), Object.FindSceneObjectsOfType(Type), Object.FindObjectsOfTypeIncludingAssets(Type), Object.FindObjectsOfType\<T>(), Object.FindObjectsByType\<T>(FindObjectsSortMode), Object.FindObjectsOfType\<T>(bool), Object.FindObjectsByType\<T>(FindObjectsInactive, FindObjectsSortMode), Object.FindObjectOfType\<T>(), Object.FindObjectOfType\<T>(bool), Object.FindFirstObjectByType\<T>(), Object.FindAnyObjectByType\<T>(), Object.FindFirstObjectByType\<T>(FindObjectsInactive), Object.FindAnyObjectByType\<T>(FindObjectsInactive), Object.FindObjectsOfTypeAll(Type), Object.FindObjectOfType(Type), Object.FindFirstObjectByType(Type), Object.FindAnyObjectByType(Type), Object.FindObjectOfType(Type, bool), Object.FindFirstObjectByType(Type, FindObjectsInactive), Object.FindAnyObjectByType(Type, FindObjectsInactive), Object.ToString(), Object.name, Object.hideFlags, [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Properties

### PackageName <a href="#ks_unity_editor_ksbasepackageupdater_1_packagename" id="ks_unity_editor_ksbasepackageupdater_1_packagename"></a>

Package name.

```csharp
protected abstract string PackageName { get; }
```

#### Property Value

[string](https://learn.microsoft.com/dotnet/api/system.string)

## Methods

### CheckForUpdates(UpdateCallback, bool) <a href="#ks_unity_editor_ksbasepackageupdater_1_checkforupdates_ks_unity_editor_ksbasepackageupdater__0__upda" id="ks_unity_editor_ksbasepackageupdater_1_checkforupdates_ks_unity_editor_ksbasepackageupdater__0__upda"></a>

Check for updates.

```csharp
public void CheckForUpdates(ksBasePackageUpdater<T>.UpdateCallback callback = null, bool forceCheck = false)
```

#### Parameters

`callback` [ksBasePackageUpdater](/reactor/api-reference/ks.unity.editor/ks.unity.editor.ksbasepackageupdater-1.md)\<T>.[UpdateCallback](/reactor/api-reference/ks.unity.editor/ks.unity.editor.ksbasepackageupdater-1/ks.unity.editor.ksbasepackageupdater-1.updatecallback.md)

Callback which returns the updated state.

`forceCheck` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

Force an update check even if a check was already perfomed.

### CompleteCheck(bool) <a href="#ks_unity_editor_ksbasepackageupdater_1_completecheck_system_boolean" id="ks_unity_editor_ksbasepackageupdater_1_completecheck_system_boolean"></a>

Sets the checked flag to prevent repeat update checks, clear the is checking flag, and calls the update callback. Derived classes should call this when they are done checking for updates.

```csharp
protected void CompleteCheck(bool updated)
```

#### Parameters

`updated` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

True if the user chose to update the package. This is passed to the update callback.

### RequestUpdateCheck() <a href="#ks_unity_editor_ksbasepackageupdater_1_requestupdatecheck" id="ks_unity_editor_ksbasepackageupdater_1_requestupdatecheck"></a>

Starts a request to check for updates to the package. Implementations should call [CompleteCheck](/reactor/api-reference/ks.unity.editor.md#KS_Unity_Editor_ksBasePackageUpdater_601_CompleteCheck_System_Boolean_) when the request is complete.

```csharp
protected abstract void RequestUpdateCheck()
```

### UpdatePackage(string, string) <a href="#ks_unity_editor_ksbasepackageupdater_1_updatepackage_system_string_system_string" id="ks_unity_editor_ksbasepackageupdater_1_updatepackage_system_string_system_string"></a>

Prompt the user to install a new package.

```csharp
protected bool UpdatePackage(string newVersion, string identifier)
```

#### Parameters

`newVersion` [string](https://learn.microsoft.com/dotnet/api/system.string)

New version

`identifier` [string](https://learn.microsoft.com/dotnet/api/system.string)

Package identifier.

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

True if the package was updated.
