-
Notifications
You must be signed in to change notification settings - Fork 20
feat(content): implement manifest installation instructions execution and GeneralsOnline EAC registration #399
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
undead2146
merged 26 commits into
development
from
feat/installation-instructions-service
Aug 20, 2026
Merged
Changes from all commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
5fd5ecd
feat(content): implement manifest installation instructions service a…
undead2146 79b398a
feat(content): add RunOnce step skipping and user settings persistenc…
undead2146 403a025
fix(content): resolve GetValidatedContentAsync interface implementati…
undead2146 dffa05f
fix(content): align BaseContentProvider pipeline and fix StyleCop war…
undead2146 b637a55
fix(content): resolve review feedback, add precondition abstraction, …
undead2146 999fd69
fix(content): restore TestContentProvider Deliverer and reduce Update…
undead2146 ca03146
fix(tests): resolve type ambiguities, constructor compatibility, and …
undead2146 86f6c61
fix(core): resolve StyleCop warnings, doc comments, and ContentType d…
undead2146 88d657c
fix(quality): address DeepSource findings for constructor visibility …
undead2146 58c51df
fix(eac): check specific EAC EOS product ID registry key instead of g…
undead2146 0df2e88
fix(installer): kill process tree on timeout and drop inherited EAC s…
undead2146 bb3d9fe
refactor(installer): decompose ExecuteRunVerifiedInstallerAsync to re…
undead2146 3df4779
fix(installer): address review feedback for authorization, containmen…
c9f5426
fix(core): resolve DeepSource lambda expressions and constructor acce…
2c03c14
fix(content): harden installation instructions step lifecycle and del…
ad06b41
fix(security): resolve all intermediate path components in symlink co…
c0ed8d7
fix(core): recursively resolve symlink target paths in PathHelper.Fol…
196833b
fix(core): resolve DeepSource exception filters, cyclomatic complexit…
539edae
fix(content): add Windows platform guard to GeneralsOnlineProvider.Pr…
3c5846e
fix(review): address review feedback, containment tests, and DI regis…
9e6b5a3
fix(content): address review feedback across deliverers, providers, a…
9a57a33
fix(core): address DeepSource static analysis findings in preconditio…
f7d9e9f
fix(core): initialize computedHash local variable to satisfy static a…
09c3852
fix(content): persist RunOnce keys immediately, check skip before aut…
8b2f059
revert(content): remove out-of-scope HttpContentDeliverer modifications
c11d7d1
feat(generalsonline): propagate sha256 to manifest file and download …
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
GenHub/GenHub.Core/Interfaces/Content/IInstallationInstructionsService.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| using System; | ||
| using System.Threading; | ||
| using System.Threading.Tasks; | ||
| using GenHub.Core.Models.Content; | ||
| using GenHub.Core.Models.Manifest; | ||
| using GenHub.Core.Models.Results; | ||
|
|
||
| namespace GenHub.Core.Interfaces.Content; | ||
|
|
||
| /// <summary> | ||
| /// Service for validating and executing manifest-declared installation steps. | ||
| /// </summary> | ||
| public interface IInstallationInstructionsService | ||
| { | ||
| /// <summary> | ||
| /// Executes post-installation steps for the specified manifest, optionally forcing run-once steps. | ||
| /// </summary> | ||
| /// <param name="manifest">The content manifest declaring post-installation steps.</param> | ||
| /// <param name="workingDirectory">The working directory containing the content files.</param> | ||
| /// <param name="providerSource">The provider source name supplying the content, used for step authorization.</param> | ||
| /// <param name="force">Whether to force execution of steps marked as run-once even if already executed.</param> | ||
| /// <param name="progress">Optional progress reporter for acquisition status.</param> | ||
| /// <param name="cancellationToken">A token to cancel the operation.</param> | ||
| /// <returns>A result indicating whether all post-installation steps succeeded.</returns> | ||
| Task<OperationResult> ExecutePostInstallStepsAsync( | ||
|
undead2146 marked this conversation as resolved.
|
||
| ContentManifest manifest, | ||
| string workingDirectory, | ||
| string? providerSource = null, | ||
| bool force = false, | ||
| IProgress<ContentAcquisitionProgress>? progress = null, | ||
| CancellationToken cancellationToken = default); | ||
| } | ||
27 changes: 27 additions & 0 deletions
27
GenHub/GenHub.Core/Interfaces/Content/IInstallationStepPrecondition.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| using GenHub.Core.Models.Manifest; | ||
|
|
||
| namespace GenHub.Core.Interfaces.Content; | ||
|
|
||
| /// <summary> | ||
| /// Defines a precondition or environment check for an installation step. | ||
| /// Allows domain-specific probes (e.g. system service or installed anti-cheat detection) | ||
| /// to determine whether a step is already satisfied. | ||
| /// </summary> | ||
| public interface IInstallationStepPrecondition | ||
| { | ||
| /// <summary> | ||
| /// Determines whether this precondition can handle the specified installation step. | ||
| /// </summary> | ||
| /// <param name="step">The installation step to inspect.</param> | ||
| /// <param name="manifest">The content manifest declaring the step.</param> | ||
| /// <returns><see langword="true"/> if this precondition applies to the step; otherwise, <see langword="false"/>.</returns> | ||
| bool CanHandle(InstallationStep step, ContentManifest manifest); | ||
|
|
||
| /// <summary> | ||
| /// Determines whether the step's goal is already fulfilled in the local environment. | ||
| /// </summary> | ||
| /// <param name="step">The installation step to evaluate.</param> | ||
| /// <param name="manifest">The content manifest declaring the step.</param> | ||
| /// <returns><see langword="true"/> if the step is already fulfilled; otherwise, <see langword="false"/>.</returns> | ||
| bool IsAlreadyFulfilled(InstallationStep step, ContentManifest manifest); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.