> 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/es/agente-de-realmjoin/realmjoin-client/native-choco-runtime.md).

# Native Choco Runtime

Native Choco Runtime es el propio motor de instalación de paquetes en proceso de RealmJoin, que reemplaza al binario obsoleto Chocolatey 0.10.3 manteniendo plena compatibilidad con los paquetes existentes.

{% hint style="info" %}
El Native Choco Runtime se introdujo con **RealmJoin Agent 4.21.6 (Beta)**. La característica está **opcional**: los clientes existentes siguen usando el motor clásico de Chocolatey hasta que habilites explícitamente el runtime nativo.
{% endhint %}

## Qué es

Cuando el agente de RealmJoin instala paquetes de software fuera de Intune (véase [instalación de paquetes](/es/agente-de-realmjoin/realmjoin-client/deploy-apps.md#package-installation)), tradicionalmente ha dependido de [Chocolatey](https://chocolatey.org/) como motor de paquetes subyacente. RealmJoin distribuía una compilación fijada y fuertemente parcheada de la CLI de código abierto de Chocolatey — versión **0.10.3** — incluida como `choco.exe` bajo `C:\ProgramData\chocolatey\`.

El **Runtime nativo de Choco** sustituye ese binario de Chocolatey incluido por la propia **implementación diseñada específicamente para este fin** que se ejecuta **en proceso** dentro del servicio de RealmJoin. Este *hace de shim para* Chocolatey: entiende el mismo formato de paquete (`.nupkg`) y se comporta de la misma manera desde el punto de vista del autor del paquete y del administrador, pero ya no depende de la antigua base de código de Chocolatey 0.10.3.

En otras palabras, los paquetes que ya usas siguen funcionando sin cambios — solo cambia el motor subyacente.

## Cómo funciona

* **Motor en proceso.** Las instalaciones de paquetes se ejecutan dentro del servicio de RealmJoin en lugar de salir a un proceso externo `choco.exe`. Las `chocolateyInstall.ps1` de cada paquete se ejecuta en un espacio de ejecución de PowerShell en proceso.
* **Almacenamiento aislado.** El runtime nativo se instala en su **propia** raíz, `C:\ProgramData\RealmJoin\choco\` (con `lib\`, `extensions\`, y `logs\` subcarpetas). `C:\ProgramData\chocolatey\` y nunca cambia el `ChocolateyInstall` variable de entorno. Esto significa que el runtime nativo y un Chocolatey clásico preexistente pueden **coexistir** en el mismo dispositivo.
* **Resolución automática de dependencias.** Las dependencias de paquetes declaradas en el `.nuspec` (como la [RealmJoin Core Choco Extension](/es/agente-de-realmjoin/recommended-packages.md#realmjoin-core-choco-extension)) se resuelven e instalan automáticamente desde tus orígenes configurados.
* **`choco.exe` shim.** Algunos scripts de paquete invocan `choco.exe` directamente. Para mantener esos casos funcionando, el runtime despliega un pequeño shim en `%ProgramFiles%\RealmJoin\choco-shim\choco.exe` que redirige esas llamadas de vuelta al motor en proceso en lugar de a Chocolatey clásico. El shim no se añade al sistema `PATH`; solo se pone a disposición de los scripts de paquete mientras se ejecutan.

## Compatibilidad

El Native Choco Runtime está diseñado como un **reemplazo directo**:

* Los paquetes existentes de RealmJoin (incluido todo lo de la [Tienda de paquetes](/es/administracion-de-aplicaciones/packages/package-store.md)) se instalan y desinstalan de la misma manera.
* Los argumentos / parámetros de paquete configurados en el Portal de RealmJoin siguen funcionando.
* El [RealmJoin Core Choco Extension](/es/agente-de-realmjoin/recommended-packages.md#realmjoin-core-choco-extension) los cmdlets auxiliares usados dentro de los scripts de paquete siguen disponibles.
* [ESP de RealmJoin](/es/agente-de-realmjoin/realmjoin-client/realmjoin-esp.md) / Autopilot son compatibles: en un dispositivo nuevo con el runtime nativo habilitado, `winchoco` los paquetes se instalan de forma nativa durante el registro, con sus dependencias resueltas automáticamente.

{% hint style="warning" %}
Como este runtime está en beta, recomendamos validar tus paquetes más importantes en un anillo piloto antes de desplegarlo en todo el Tenant. Informa cualquier diferencia de comportamiento al soporte de RealmJoin para que podamos corregirla antes de la disponibilidad general.
{% endhint %}

## Cómo usarlo

El runtime se selecciona mediante una RealmJoin **configuración**, así que puedes controlarlo de forma centralizada en lugar de tocar clientes individuales. La configuración de RealmJoin se hereda en cascada, lo que significa que puedes establecer un **valor predeterminado para todo el Tenant** y, cuando sea necesario, **anularlo para grupos específicos** (y los objetos dentro de ellos).

{% hint style="info" %}
Clave de configuración: `Chocolatey.UseNativeRuntime`

Valor de la configuración: `true` / `false`
{% endhint %}

Las siguientes configuraciones controlan el comportamiento:

<table><thead><tr><th>Configuración</th><th width="120">Predeterminado</th><th>Significado</th></tr></thead><tbody><tr><td><code>Chocolatey.Enabled</code></td><td><code>false</code></td><td>RealmJoin administra paquetes de tipo Chocolatey en el dispositivo.</td></tr><tr><td><code>Chocolatey.UseNativeRuntime</code></td><td><code>false</code></td><td>Interruptor principal. Cuando <code>false</code>, las instalaciones siguen pasando por el clásico <code>choco.exe</code>. Cuando <code>true</code>, todas <code>winchoco</code> las instalaciones pasan por el runtime nativo en proceso.</td></tr><tr><td><code>Chocolatey.DisableShim</code></td><td><code>false</code></td><td>Solo es relevante cuando <code>UseNativeRuntime = true</code>. Cuando <code>true</code>, cualquier script de paquete que invoque un <code>choco.exe</code> falla de forma explícita en lugar de ser redirigido a través del shim — útil para sacar a la luz scripts que todavía recurren a un binario externo.</td></tr></tbody></table>

{% stepper %}
{% step %}

### Habilítalo primero para un grupo piloto

Abre la configuración de un RealmJoin **grupo** que contenga un pequeño conjunto de dispositivos piloto y establece `Chocolatey.UseNativeRuntime` a `true` ahí. Como la configuración de grupo tiene prioridad sobre el valor predeterminado de todo el Tenant, solo esos dispositivos cambian al nuevo motor.
{% endstep %}

{% step %}

### Valida tus paquetes

Deja que los dispositivos piloto ejecuten sus asignaciones y actualizaciones normales de paquetes. Confirma que las instalaciones se completan correctamente y revisa los registros si algo parece extraño (véase [Problemas de instalación de paquetes](/es/solucion-de-problemas-y-preguntas-frecuentes/troubleshooting/package-installation-issues.md)).
{% endstep %}

{% step %}

### Despliega esto en todo el Tenant

Una vez que estés seguro, establece `Chocolatey.UseNativeRuntime` a `true` ya que el **valor predeterminado para todo el Tenant** para que todos los clientes lo usen. Los grupos individuales aún pueden optar por no usarlo si necesitas mantenerlos temporalmente en el motor clásico.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
La configuración sigue el mismo modelo de configuración de Tenant / anulación por grupo que los demás ajustes del agente descritos en [Configuración general](/es/administracion-y-configuracion/general.md) (por ejemplo, la **Configuración del cliente** y **Configuración de LAPS** ).
{% endhint %}

## Cuál es el valor predeterminado

Native Choco Runtime está **deshabilitado de forma predeterminada** (`Chocolatey.UseNativeRuntime = false`). Los clientes continúan usando el motor clásico de Chocolatey 0.10.3 incluido hasta que un administrador habilita el runtime nativo — ya sea en todo el Tenant o para un grupo específico. Esto te permite adoptar el nuevo runtime a tu propio ritmo y revertirlo con la misma facilidad mientras la característica está en beta.

## Migración de dispositivos existentes

El runtime nativo y Chocolatey clásico **coexistir** en un dispositivo durante todo el tiempo que sea necesario. Cuando habilitas el runtime nativo en un dispositivo que ya tiene paquetes instalados con Chocolatey clásico:

* Los paquetes existentes administrados por RealmJoin siguen funcionando y no **devolvería** se reinstalan solo porque cambió el runtime — su estado instalado se conserva durante el cambio, así que no hay una avalancha de reinstalaciones.
* Las nuevas instalaciones y actualizaciones pasan por el runtime nativo; la instalación clásica permanece en el disco, sin tocar, hasta que se elimine explícitamente.

{% hint style="info" %}
La eliminación del Chocolatey clásico en toda la flota está prevista como un paso separado y coordinado. Hasta entonces, el runtime nativo puede coexistir sin problema con una instalación clásica residual, así que no hay una fecha límite estricta para limpiarla.
{% endhint %}

Para un dispositivo individual (por ejemplo, durante soporte o QA), un administrador puede sacar una máquina de Chocolatey clásico con el verbo del shim desde una `migre` shell **elevada** :

{% code overflow="wrap" %}

```powershell
# Previsualiza lo que ocurriría, sin hacer cambios
& "C:\Program Files\RealmJoin\choco-shim\choco.exe" migrate --dry-run

# Reinstala los paquetes con estado mediante el runtime nativo y luego elimina el clásico
& "C:\Program Files\RealmJoin\choco-shim\choco.exe" migrate --yes
```

{% endcode %}

{% hint style="warning" %}
`choco migrate` es un **ayudante administrativo para un solo dispositivo** (soporte, desarrollo/QA, limpieza puntual). No es **devolvería** el mecanismo para desplegar el cambio en toda una flota — usa la configuración de Tenant/grupo para eso.
{% endhint %}

## Registros y solución de problemas

Las instalaciones del runtime nativo escriben un registro por paquete en:

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

(limitado a las 10 entradas más recientes por paquete). Esto es independiente de `C:\ProgramData\chocolatey\logs\`. Al recopilar registros para una solicitud de soporte, incluye la `C:\ProgramData\RealmJoin\` carpeta como se describe en [Problemas de instalación de paquetes](/es/solucion-de-problemas-y-preguntas-frecuentes/troubleshooting/package-installation-issues.md).

### Referencia de archivos y rutas

| Ruta                                              | Propósito                                                    |
| ------------------------------------------------- | ------------------------------------------------------------ |
| `C:\ProgramData\RealmJoin\choco\lib\<id>`         | Raíz de instalación de paquetes del runtime nativo.          |
| `C:\ProgramData\RealmJoin\choco\extensions\<id>`  | Módulos auxiliares de PowerShell importados automáticamente. |
| `C:\ProgramData\RealmJoin\choco\logs\<id>`        | Registros por instalación (los últimos 10 por paquete).      |
| `C:\Program Files\RealmJoin\choco-shim\choco.exe` | El `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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.realmjoin.com/es/agente-de-realmjoin/realmjoin-client/native-choco-runtime.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
