> 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).

# Entorno de ejecución nativo de Choco

El Native Choco Runtime es el propio motor de instalación de paquetes en proceso de RealmJoin que reemplaza el binario obsoleto de Chocolatey 0.10.3 sin dejar de ser totalmente compatible con los paquetes existentes.

{% hint style="info" %}
El Native Choco Runtime se introdujo con **RealmJoin Agent 4.21.6 (Beta)**. La característica es **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 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 subyacente de paquetes. RealmJoin distribuyó una compilación fijada y fuertemente parcheada de la CLI de Chocolatey de código abierto — versión **0.10.3** — incluida como `choco.exe` en `C:\ProgramData\chocolatey\`.

La **Native Choco Runtime** reemplaza ese binario de Chocolatey incluido por la **propia implementación hecha a medida** de RealmJoin, que se ejecuta **en proceso** dentro del servicio de RealmJoin. Se *comporta como sustituto de* Chocolatey: entiende el mismo formato de paquete (`.nupkg`) y se comporta igual desde el punto de vista del autor del paquete y del administrador, pero ya no depende de la anticuada base de código Chocolatey 0.10.3.

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

## Cómo funciona

* **Motor en proceso.** Las instalaciones de paquetes se ejecutan dentro del servicio de RealmJoin en lugar de invocar un `choco.exe`. Los `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 **propio** raíz, `C:\ProgramData\RealmJoin\choco\` (con `lib\`, `extensions\`, y `logs\` subcarpetas). Nunca escribe en el estado del Chocolatey clásico bajo `C:\ProgramData\chocolatey\` y nunca cambia la variable de entorno `ChocolateyInstall` del sistema. 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 los paquetes declaradas en el `.nuspec` (como [Extensión Core Choco de RealmJoin](/es/agente-de-realmjoin/recommended-packages.md#realmjoin-core-choco-extension)) se resuelven e instalan automáticamente desde tus orígenes configurados.
* **`choco.exe` capa de compatibilidad.** Algunos scripts de paquetes llaman a `choco.exe` directamente. Para que sigan funcionando, el runtime despliega una pequeña `%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 agrega al `PATH`del sistema; solo se pone a disposición de los scripts de paquetes mientras se ejecutan.

## Compatibilidad

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

* Los paquetes existentes de RealmJoin (incluido todo lo de [Tienda de paquetes](/es/gestion-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.
* La [Extensión Core Choco de RealmJoin](/es/agente-de-realmjoin/recommended-packages.md#realmjoin-core-choco-extension) los cmdlets auxiliares usados dentro de los scripts de paquetes 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 para todo el Tenant. Informa cualquier diferencia de comportamiento al Soporte de RealmJoin para que podamos solucionarla antes de la disponibilidad general.
{% endhint %}

## Cómo usarlo

El runtime se selecciona mediante una configuración de RealmJoin, así que puedes controlarlo de forma centralizada en lugar de tocar clientes individuales. La configuración de RealmJoin se encadena, lo que significa que puedes establecer un **configuración**de RealmJoin, así que puedes controlarlo de forma centralizada en lugar de tocar clientes individuales. La configuración de RealmJoin se encadena, 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 configuración: `true` / `false`
{% endhint %}

Las siguientes configuraciones controlan el comportamiento:

<table><thead><tr><th>Ajuste</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 gestiona en el dispositivo los paquetes de tipo Chocolatey.</td></tr><tr><td><code>Chocolatey.UseNativeRuntime</code></td><td><code>false</code></td><td>Interruptor maestro. Cuando <code>false</code>está desactivado, las instalaciones siguen pasando por el Chocolatey clásico, <code>choco.exe</code>. Cuando <code>true</code>cuando está activado, 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 relevante cuando <code>UseNativeRuntime = true</code>. Cuando <code>true</code>, cualquier script de paquete que llame a un <code>choco.exe</code> externo 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 **grupo** que contiene 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 para 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 de paquetes normales. Confirma que las instalaciones se completan correctamente y revisa los registros si algo parece raro (véase [Problemas de instalación de paquetes](/es/solucion-de-problemas-y-preguntas-frecuentes/troubleshooting/package-installation-issues.md)).
{% endstep %}

{% step %}

### Despliega para 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 excluirse si necesitas mantenerlos temporalmente en el motor clásico.
{% endstep %}
{% endstepper %}

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

## Cuál es el valor predeterminado

Native Choco Runtime es **está deshabilitado de forma predeterminada** (`Chocolatey.UseNativeRuntime = false`). Los clientes siguen usando el motor clásico de Chocolatey 0.10.3 incluido hasta que un administrador habilita el runtime nativo — ya sea para 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 haga falta. Cuando habilitas el runtime nativo en un dispositivo que ya tiene paquetes instalados con Chocolatey clásico:

* Los paquetes existentes gestionados por RealmJoin siguen funcionando y **devolvería** no se reinstalan solo porque cambió el runtime; su estado instalado se conserva tras 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 disco, intacta, hasta que se elimina explícitamente.

{% hint style="info" %}
La eliminación global del Chocolatey clásico está prevista como un paso separado y orquestado. Hasta entonces, el runtime nativo convive 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 `migre` verbo de **una shell** :

{% code overflow="wrap" %}

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

# Reinstala 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 de administración para un solo dispositivo** (soporte, desarrollo/QA, limpieza puntual). **devolvería** No es el mecanismo para desplegar el cambio en toda una flota; para eso usa la configuración de Tenant/grupo.
{% 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
```

(se conservan solo las 10 entradas más recientes por paquete). Esto es independiente de los `C:\ProgramData\chocolatey\logs\`. Al recopilar registros para una solicitud de soporte, incluye la carpeta `C:\ProgramData\RealmJoin\` tal 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 (últimos 10 por paquete).          |
| `C:\Program Files\RealmJoin\choco-shim\choco.exe` | La `choco.exe` capa de compatibilidad.                       |


---

# 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/es/agente-de-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.
