> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/fr/agent-realmjoin/realmjoin-client/native-choco-runtime.md).

# Runtime Choco natif

{% hint style="info" %}
Le Native Choco Runtime a été introduit avec **RealmJoin Agent 4.21.6 (bêta)**. La fonctionnalité est **à activation explicite**: les clients existants continuent d'utiliser le moteur Chocolatey classique jusqu'à ce que vous activiez explicitement le runtime natif.
{% endhint %}

## Ce que c'est

Lorsque RealmJoin Agent installe des packages logiciels en dehors d'Intune (voir [installation de packages](/fr/agent-realmjoin/realmjoin-client/deploy-apps.md#package-installation)), il s'est traditionnellement appuyé sur [Chocolatey](https://chocolatey.org/) comme moteur de packages sous-jacent. RealmJoin fournissait une version figée et fortement patchée de l'interface en ligne de commande Chocolatey open source — version **0.10.3** — intégrée sous forme de `choco.exe` dans `C:\ProgramData\chocolatey\`.

Le **Runtime Choco natif** remplace cet exécutable Chocolatey intégré par la **sa propre implémentation dédiée** qui s'exécute **dans le même processus** au sein du service RealmJoin. Il *fait office d'intermédiaire pour* Chocolatey : il comprend le même format de package (`.nupkg`) et se comporte de la même façon du point de vue de l'auteur du package et de l'administrateur, mais il ne dépend plus de la base de code vieillissante de Chocolatey 0.10.3.

Autrement dit, les packages que vous utilisez déjà continuent de fonctionner sans changement — seul le moteur sous-jacent change.

## Comment ça marche

* **Moteur dans le même processus.** Les installations de packages s'exécutent au sein du service RealmJoin au lieu d'appeler un `choco.exe`. Le `chocolateyInstall.ps1` de chaque package est exécuté dans un espace d'exécution PowerShell dans le même processus.
* **Stockage isolé.** Le runtime natif s'installe dans son **propre** répertoire racine, `C:\ProgramData\RealmJoin\choco\` avec `lib\`, `extensions\`, et `logs\` sous-dossiers). Il n'écrit jamais dans l'état de Chocolatey classique sous `C:\ProgramData\chocolatey\` et ne modifie jamais la variable d'environnement `ChocolateyInstall` . Cela signifie que le runtime natif et une installation classique de Chocolatey déjà présente peuvent **coexister** sur le même appareil.
* **Résolution automatique des dépendances.** Les dépendances de package déclarées dans le `.nuspec` (comme le [RealmJoin Core Choco Extension](/fr/agent-realmjoin/recommended-packages.md#realmjoin-core-choco-extension)) sont résolues et installées automatiquement à partir de vos sources configurées.
* **`choco.exe` shim.** Certains scripts de package appellent `choco.exe` directement. Pour garantir leur fonctionnement, le runtime déploie un petit shim vers `%ProgramFiles%\RealmJoin\choco-shim\choco.exe` qui redirige ces appels vers le moteur dans le même processus au lieu de les envoyer à Chocolatey classique. Le shim n'est pas ajouté au système `PATH`; il n'est mis à disposition des scripts de package que pendant leur exécution.

## Compatibilité

Le Native Choco Runtime est conçu comme un **remplacement transparent**:

* Les packages RealmJoin existants (y compris tout ce qui vient du [Boutique de packages](/fr/gestion-des-applications/packages/package-store.md)) s'installent et se désinstallent de la même manière.
* Les arguments / paramètres de package configurés dans le RealmJoin Portal continuent de fonctionner.
* Le [RealmJoin Core Choco Extension](/fr/agent-realmjoin/recommended-packages.md#realmjoin-core-choco-extension) Les cmdlets d'assistance utilisées dans les scripts de package restent disponibles.
* [RealmJoin ESP](/fr/agent-realmjoin/realmjoin-client/realmjoin-esp.md) / Autopilot sont pris en charge : sur un nouvel appareil avec le runtime natif activé, `winchoco` les packages sont installés nativement pendant l'inscription, avec leurs dépendances résolues automatiquement.

{% hint style="warning" %}
Comme ce runtime est en bêta, nous vous recommandons de valider vos packages les plus importants sur un anneau pilote avant de le déployer à l'échelle du tenant. Veuillez signaler toute différence de comportement au support RealmJoin afin que nous puissions les corriger avant la disponibilité générale.
{% endhint %}

## Comment l'utiliser

Le runtime est sélectionné via un RealmJoin **paramètre**, vous pouvez donc le contrôler de manière centralisée au lieu de modifier des clients individuels. Les paramètres RealmJoin sont hiérarchiques, ce qui signifie que vous pouvez définir un **par défaut à l'échelle du tenant** et, si nécessaire, **le remplacer pour des groupes spécifiques** (et les objets qu'ils contiennent).

{% hint style="info" %}
Clé du paramètre : `Chocolatey.UseNativeRuntime`

Valeur du paramètre : `true` / `false`
{% endhint %}

Les paramètres suivants contrôlent le comportement :

<table><thead><tr><th>Paramètre</th><th width="120">Par défaut</th><th>Signification</th></tr></thead><tbody><tr><td><code>Chocolatey.Enabled</code></td><td><code>false</code></td><td>RealmJoin gère sur l'appareil les packages de type Chocolatey.</td></tr><tr><td><code>Chocolatey.UseNativeRuntime</code></td><td><code>false</code></td><td>Interrupteur principal. Lorsque <code>false</code>, les installations passent toujours par le <code>choco.exe</code>. Lorsque <code>true</code>toutes <code>winchoco</code> les installations passent par le runtime natif dans le même processus.</td></tr><tr><td><code>Chocolatey.DisableShim</code></td><td><code>false</code></td><td>Ne s'applique que lorsque <code>UseNativeRuntime = true</code>. Lorsque <code>true</code>, tout script de package qui appelle un <code>choco.exe</code> échoue explicitement au lieu d'être redirigé via le shim — utile pour identifier les scripts qui font encore appel à un exécutable externe.</td></tr></tbody></table>

{% stepper %}
{% step %}

### Activez-le d'abord pour un groupe pilote

Ouvrez les paramètres d'un RealmJoin **groupe** qui contient un petit ensemble d'appareils pilotes et définissez `Chocolatey.UseNativeRuntime` en `true` là. Comme les paramètres du groupe prévalent sur la valeur par défaut à l'échelle du tenant, seuls ces appareils passent au nouveau moteur.
{% endstep %}

{% step %}

### Validez vos packages

Laissez les appareils pilotes exécuter leurs attributions et mises à niveau de packages habituelles. Confirmez que les installations réussissent et vérifiez les journaux si quelque chose vous semble anormal (voir [Problèmes d'installation de packages](/fr/depannage-et-faq/troubleshooting/package-installation-issues.md)).
{% endstep %}

{% step %}

### Déployez-le à l'échelle du tenant

Une fois que vous êtes sûr de vous, définissez `Chocolatey.UseNativeRuntime` en `true` car le **par défaut à l'échelle du tenant** afin que tous les clients l'utilisent. Des groupes individuels peuvent toujours se désengager si vous devez les maintenir temporairement sur le moteur classique.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
La configuration suit le même modèle paramètre du tenant / remplacement par groupe que les autres paramètres de l'agent décrits dans [Paramètres généraux](/fr/administration-et-parametres/general.md) (par exemple les **Configuration du client** et **Configuration LAPS** paramètres du tenant).
{% endhint %}

## Quelle est la valeur par défaut

Le Native Choco Runtime est **désactivé par défaut** (`Chocolatey.UseNativeRuntime = false`). Les clients continuent d'utiliser le moteur Chocolatey 0.10.3 classique intégré jusqu'à ce qu'un administrateur active le runtime natif — à l'échelle du tenant ou pour un groupe spécifique. Cela vous permet d'adopter le nouveau runtime à votre rythme et de revenir en arrière tout aussi facilement tant que la fonctionnalité est en bêta.

## Migration des appareils existants

Le runtime natif et Chocolatey classique **coexister** sur un appareil aussi longtemps que nécessaire. Lorsque vous activez le runtime natif sur un appareil qui possède déjà des packages installés avec Chocolatey classique :

* Les packages existants gérés par RealmJoin continuent de fonctionner et ne sont pas **pas** réinstallés simplement parce que le runtime a changé — leur état installé est conservé lors du basculement, il n'y a donc pas de vague de réinstallation.
* Les nouvelles installations et les mises à niveau passent par le runtime natif ; l'installation classique reste sur le disque, intacte, jusqu'à sa suppression explicite.

{% hint style="info" %}
La suppression de Chocolatey classique à l'échelle du parc est prévue comme une étape distincte et orchestrée. D'ici là, le runtime natif peut coexister sans problème avec une installation classique résiduelle, il n'y a donc pas d'échéance impérative pour la nettoyer.
{% endhint %}

Pour un appareil individuel (par exemple lors d'un support ou d'une QA), un administrateur peut retirer une machine de Chocolatey classique à l'aide de la `migrer` commande du shim depuis un **élevé** shell :

{% code overflow="wrap" %}

```powershell
# Prévisualiser ce qui se passerait, sans effectuer de modifications
& "C:\Program Files\RealmJoin\choco-shim\choco.exe" migrate --dry-run

# Réinstaller les packages avec état via le runtime natif, puis supprimer la version classique
& "C:\Program Files\RealmJoin\choco-shim\choco.exe" migrate --yes
```

{% endcode %}

{% hint style="warning" %}
`choco migrate` est une **aide d'administration pour un appareil unique** (support, dev/QA, nettoyage ponctuel). Ce n'est **pas** pas le mécanisme de déploiement du changement sur l'ensemble du parc — utilisez pour cela les paramètres du tenant/groupe.
{% endhint %}

## Journaux et dépannage

Les installations du runtime natif écrivent un journal par package dans :

```
C:\ProgramData\RealmJoin\choco\logs\<package-id>\<timestamp>_<version>_<operation>.log
```

(conservés pour les 10 entrées les plus récentes par package). Cela est distinct des journaux de Chocolatey classique dans `C:\ProgramData\chocolatey\logs\`. Lors de la collecte des journaux pour une demande de support, incluez le dossier `C:\ProgramData\RealmJoin\` comme décrit dans [Problèmes d'installation de packages](/fr/depannage-et-faq/troubleshooting/package-installation-issues.md).

### Référence des fichiers et chemins

| Chemin                                            | Objectif                                                        |
| ------------------------------------------------- | --------------------------------------------------------------- |
| `C:\ProgramData\RealmJoin\choco\lib\<id>`         | Répertoire racine d'installation des packages du runtime natif. |
| `C:\ProgramData\RealmJoin\choco\extensions\<id>`  | Modules d'assistance PowerShell importés automatiquement.       |
| `C:\ProgramData\RealmJoin\choco\logs\<id>`        | Journaux par installation (10 derniers par package).            |
| `C:\Program Files\RealmJoin\choco-shim\choco.exe` | Le `choco.exe` shim.                                            |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.realmjoin.com/fr/agent-realmjoin/realmjoin-client/native-choco-runtime.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
