Acerca de la configuración dinámica de App-V

Se aplica a:

  • Windows 10
  • Windows 11

Puede usar la configuración dinámica para personalizar un paquete de App-V para un usuario. En este artículo se explica cómo crear o editar un archivo de configuración dinámica existente.

Al editar el archivo de configuración dinámica, se personaliza cómo se ejecutará un paquete de App-V para un usuario o grupo. Por lo tanto, la personalización de paquetes se hace más cómoda al quitar la necesidad de volver a secuenciar paquetes mediante la configuración deseada y proporciona una manera de mantener independiente el contenido del paquete y la configuración personalizada.

Avanzado: configuración dinámica

Los paquetes de aplicación virtual contienen un manifiesto que proporciona toda la información principal del paquete. Esta información incluye los valores predeterminados de la configuración del paquete y determina la configuración en el formato más básico (sin más personalización). Si desea ajustar estos valores predeterminados para un usuario o grupo determinados, puede crear y editar los siguientes archivos:

  • Archivo de configuración de usuario
  • Archivo de configuración de implementación

Estos archivos .xml especifican la configuración del paquete que permiten personalizar los paquetes sin afectar directamente a los paquetes. Cuando se crea un paquete, el secuenciador genera automáticamente la implementación predeterminada y la configuración del usuario .xml archivos mediante los datos del manifiesto del paquete. Estos archivos de configuración generados automáticamente reflejan la configuración predeterminada del paquete que se configuró durante la secuenciación. Si aplica estos archivos de configuración a un paquete en el formulario generado por el secuenciador, los paquetes tendrán la misma configuración predeterminada que provenía de su manifiesto. Este resultado proporciona una plantilla específica del paquete para empezar si se debe cambiar alguno de los valores predeterminados.

Nota

La siguiente información solo se puede usar para modificar los archivos de configuración generados por secuenciador con el fin de personalizar los paquetes con el fin de satisfacer los requisitos específicos de usuario o grupo.

Contenido del archivo de configuración dinámica

Todas las adiciones, eliminaciones y actualizaciones de los archivos de configuración deben realizarse en relación con los valores predeterminados especificados por la información de manifiesto del paquete. La lista siguiente representa la relación entre estos archivos en la forma en que se leerán, de la mayoría a la prioridad mínima:

  • Archivo de .xml de configuración de usuario
  • Archivo de .xml de configuración de implementación
  • Manifiesto de paquete

El primer elemento representa lo que se leerá en último lugar. Por lo tanto, su contenido tiene prioridad. Todos los paquetes contienen y proporcionan de forma inherente la configuración predeterminada del manifiesto del paquete, pero también tienen la menor prioridad. Si aplica un archivo de configuración de implementación .xml con una configuración personalizada, invalidará los valores predeterminados del manifiesto de paquete. Si aplica un archivo de .xml de configuración de usuario con valores personalizados antes de la invalidación de los valores predeterminados del manifiesto de paquete, invalidará tanto la configuración de implementación como los valores predeterminados del manifiesto de paquete.

Hay dos tipos de archivos de configuración:

  • Archivo de configuración de usuario (UserConfig): permite especificar o modificar la configuración personalizada de un paquete. Esta configuración se aplicará a un usuario específico cuando el paquete se implemente en un equipo que ejecuta el cliente de App-V.
  • Archivo de configuración de implementación (DeploymentConfig): permite especificar o modificar la configuración predeterminada de un paquete. Esta configuración se aplicará a todos los usuarios cuando se implemente un paquete en un equipo que ejecuta el cliente de App-V.

Puede usar el archivo UserConfig para personalizar la configuración de un paquete para un conjunto específico de usuarios en un equipo o realizar cambios que se aplicarán a ubicaciones de usuario locales como HKCU. Puede usar el archivo DeploymentConfig para modificar la configuración predeterminada de un paquete para todos los usuarios de un equipo o realizar cambios que se aplicarán a ubicaciones globales, como HKEY_LOCAL_MACHINE y la carpeta Todos los usuarios.

El archivo UserConfig proporciona opciones de configuración que puede aplicar a un único usuario sin que afecte a ningún otro usuario de un cliente:

  • Extensiones que se integrarán en el sistema nativo por usuario: accesos directos, asociaciones de File-Type, protocolos de dirección URL, AppPaths, clientes de software y COM.
  • Subsistemas virtuales: objetos de aplicación, variables de entorno, modificaciones del Registro, servicios y fuentes.
  • Scripts (solo contexto de usuario).

El archivo DeploymentConfig proporciona opciones de configuración en dos secciones, una relativa al contexto de la máquina y otra relativa al contexto de usuario que proporciona las mismas funcionalidades enumeradas en la lista UserConfig anterior:

  • Toda la configuración de UserConfig de la sección anterior de este tema
  • Extensiones que solo se pueden aplicar globalmente para todos los usuarios
  • Subsistemas virtuales que se pueden configurar para ubicaciones de máquinas globales, como el registro
  • Dirección URL de origen del producto
  • Scripts (solo contexto de máquina)
  • Controles para finalizar procesos secundarios

Estructura de archivos

La estructura del archivo de configuración dinámica de App-V se explica en la sección siguiente.

Archivo de configuración dinámica de usuario

Un ejemplo del encabezado de un archivo de configuración dinámica de usuario es:

<?xml version="1.0" encoding="utf-8"?>
<UserConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/userconfiguration">

PackageId es el mismo valor que existe en el archivo de manifiesto.

Cuerpo del archivo de configuración dinámica de usuario

El cuerpo del archivo de configuración dinámica de usuario puede incluir todos los puntos de extensión de aplicación definidos en el archivo de manifiesto y la información para configurar aplicaciones virtuales. Hay cuatro subsecciones permitidas en el cuerpo:

Aplicaciones: todas las extensiones de aplicación contenidas en el archivo de manifiesto dentro de un paquete se asignan con un identificador de aplicación, que también se define en el archivo de manifiesto. Esto le permite habilitar o deshabilitar todas las extensiones de una aplicación determinada dentro de un paquete. El identificador de aplicación debe existir en el archivo de manifiesto o se omitirá.

    <UserConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/userconfiguration">
    <Applications>
    <!-- No new application can be defined in policy. AppV Client will ignore any application ID that is not also in the Manifest file -->
    <Application Id="{a56fa627-c35f-4a01-9e79-7d36aed8225a}" Enabled="false">
    </Application>
    </Applications>
    …
    </UserConfiguration>

Subsistemas: AppExtensions y otros subsistemas se organizan como subnodos en <Subsystems>, como se muestra en el ejemplo siguiente.

    <UserConfiguration **PackageId**="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/userconfiguration">
    <Subsystems>
    ..
    </Subsystems>
    ..
    </UserConfiguration>

Cada subsistema se puede habilitar o deshabilitar mediante el atributo Enabled . En las secciones siguientes se describen los distintos subsistemas y ejemplos de uso.

Extensiones de archivo de configuración dinámica de usuario

Extensiones de control subsistemas de extensión. Estos subsistemas son accesos directos, asociaciones de File-Type, protocolos de dirección URL, AppPaths, clientes de software y COM.

Los subsistemas de extensión se pueden habilitar y deshabilitar independientemente del contenido.  Por lo tanto, si los accesos directos están habilitados, el cliente usará los accesos directos contenidos en el manifiesto de forma predeterminada. Cada subsistema de extensiones puede contener un <Extensions> nodo. Si este elemento secundario está presente, el cliente omitirá el contenido del archivo de manifiesto de ese subsistema y solo usará el contenido del archivo de configuración.

Ejemplos del subsistema de accesos directos

Ejemplo 1

El contenido se omitirá si el usuario definió las siguientes sintaxis en el archivo de configuración dinámico o de implementación:

                                     <Shortcuts  Enabled="true">
                                                 <Extensions
                                                  ...
                                                 </Extensions>
                                     </Shortcuts>

Ejemplo 2

El contenido del manifiesto se integrará durante la publicación si el usuario definió solo la sintaxis siguiente:


                                    `<Shortcuts  Enabled="true"/>`

Ejemplo 3

Se omitirán todos los accesos directos del manifiesto y no se integrarán métodos abreviados si el usuario define las sintaxis siguientes:

                           <Shortcuts  Enabled="true">
                                                 <Extensions/>
                                     </Shortcuts>

Subsistemas de extensión admitidos

Accesos directos: este subsistema controla los accesos directos que se integrarán en el sistema local. El ejemplo siguiente tiene dos métodos abreviados:

    <Subsystems>
    <Shortcuts Enabled="true">
      <Extensions>
        <Extension Category="AppV.Shortcut">
          <Shortcut>
            <File>\[{Common Programs}\]\\Microsoft Contoso\\Microsoft ContosoApp Filler 2010.lnk</File>
            <Target>\[{PackageRoot}\]\\Contoso\\ContosoApp.EXE</Target>
            <Icon>\[{Windows}\]\\Installer\\{90140000-0011-0000-0000-0000000FF1CE}\\inficon.exe</Icon>
            <Arguments />
            <WorkingDirectory />
            <AppUserModelId>ContosoApp.Filler.3</AppUserModelId>
            <Description>Fill out dynamic forms to gather and reuse information throughout the organization using Microsoft ContosoApp.</Description>
            <Hotkey>0</Hotkey>
            <ShowCommand>1</ShowCommand>
            <ApplicationId>\[{PackageRoot}\]\\Contoso\\ContosoApp.EXE</ApplicationId>
          </Shortcut>
      </Extension>
      <Extension Category="AppV.Shortcut">
        <Shortcut>
          <File>\[{AppData}\]\\Microsoft\\Contoso\\Recent\\Templates.LNK</File>
          <Target>\[{AppData}\]\\Microsoft\\Templates</Target>
          <Icon />
          <Arguments />
          <WorkingDirectory />
          <AppUserModelId />
          <Description />
          <Hotkey>0</Hotkey>
          <ShowCommand>1</ShowCommand>
          <!-- Note the ApplicationId is optional -->
        </Shortcut>
      </Extension>
     </Extensions>
    </Shortcuts>

Asociaciones de tipos de archivo: asocia tipos de archivo con programas para abrir de forma predeterminada y configurar el menú contextual. (Los tipos MIME también se pueden configurar con este subsistema). Un ejemplo de una asociación FileType es:

    <FileTypeAssociations Enabled="true">
    <Extensions>
      <Extension Category="AppV.FileTypeAssociation">
        <FileTypeAssociation>
          <FileExtension MimeAssociation="true">
          <Name>.docm</Name>
          <ProgId>contosowordpad.DocumentMacroEnabled.12</ProgId>
          <PerceivedType>document</PerceivedType>
          <ContentType>application/vnd.ms-contosowordpad.document.macroEnabled.12</ContentType>
          <OpenWithList>
            <ApplicationName>wincontosowordpad.exe</ApplicationName>
          </OpenWithList>
         <OpenWithProgIds>
            <ProgId>contosowordpad.8</ProgId>
          </OpenWithProgIds>
          <ShellNew>
            <Command />
            <DataBinary />
            <DataText />
            <FileName />
            <NullFile>true</NullFile>
            <ItemName />
            <IconPath />
            <MenuText />
            <Handler />
          </ShellNew>
        </FileExtension>
        <ProgId>
           <Name>contosowordpad.DocumentMacroEnabled.12</Name>
            <DefaultIcon>\[{Windows}\]\\Installer\\{90140000-0011-0000-0000-0000000FF1CE}\\contosowordpadicon.exe,15</DefaultIcon>
            <Description>Blah Blah Blah</Description>
            <FriendlyTypeName>\[{FOLDERID\_ProgramFilesX86}\]\\Microsoft Contoso 14\\res.dll,9182</FriendlyTypeName>
            <InfoTip>\[{FOLDERID\_ProgramFilesX86}\]\\Microsoft Contoso 14\\res.dll,1424</InfoTip>
            <EditFlags>0</EditFlags>
            <ShellCommands>
              <DefaultCommand>Open</DefaultCommand>
              <ShellCommand>
                 <ApplicationId>{e56fa627-c35f-4a01-9e79-7d36aed8225a}</ApplicationId>
                 <Name>Edit</Name>
                 <FriendlyName>&Edit</FriendlyName>
                 <CommandLine>"\[{PackageRoot}\]\\Contoso\\WINcontosowordpad.EXE" /vu "%1"</CommandLine>
              </ShellCommand>
              </ShellCommand>
                <ApplicationId>{e56fa627-c35f-4a01-9e79-7d36aed8225a}</ApplicationId>
                <Name>Open</Name>
                <FriendlyName>&Open</FriendlyName>
                <CommandLine>"\[{PackageRoot}\]\\Contoso\\WINcontosowordpad.EXE" /n "%1"</CommandLine>
                <DropTargetClassId />
                <DdeExec>
                  <Application>mscontosowordpad</Application>
                  <Topic>ShellSystem</Topic>
                  <IfExec>\[SHELLNOOP\]</IfExec>
                  <DdeCommand>\[SetForeground\]\[ShellNewDatabase "%1"\]</DdeCommand>
                </DdeExec>
              </ShellCommand>
            </ShellCommands>
          </ProgId>
         </FileTypeAssociation>
       </Extension>
      </Extensions>
      </FileTypeAssociations>

Protocolos de dirección URL: este subsistema controla los protocolos de dirección URL integrados en el registro local de la máquina cliente. En el ejemplo siguiente se muestra el protocolo "mailto:".

    <URLProtocols Enabled="true">
    <Extensions>
    <Extension Category="AppV.URLProtocol">
    <URLProtocol>
      <Name>mailto</Name>
      <ApplicationURLProtocol>
      <DefaultIcon>\[{ProgramFilesX86}\]\\Microsoft Contoso\\Contoso\\contosomail.EXE,-9403</DefaultIcon>
      <EditFlags>2</EditFlags>
      <Description />
      <AppUserModelId />
      <FriendlyTypeName />
      <InfoTip />
    <SourceFilter />
      <ShellFolder />
      <WebNavigableCLSID />
      <ExplorerFlags>2</ExplorerFlags>
      <CLSID />
      <ShellCommands>
      <DefaultCommand>open</DefaultCommand>
      <ShellCommand>
      <ApplicationId>\[{ProgramFilesX86}\]\\Microsoft Contoso\\Contoso\\contosomail.EXE</ApplicationId>
      <Name>open</Name>
      <CommandLine>\[{ProgramFilesX86}\\Microsoft Contoso\\Contoso\\contosomail.EXE" -c OEP.Note /m "%1"</CommandLine>
      <DropTargetClassId />
      <FriendlyName />
      <Extended>0</Extended>
      <LegacyDisable>0</LegacyDisable>
      <SuppressionPolicy>2</SuppressionPolicy>
       <DdeExec>
      <NoActivateHandler />
      <Application>contosomail</Application>
      <Topic>ShellSystem</Topic>
      <IfExec>\[SHELLNOOP\]</IfExec>
      <DdeCommand>\[SetForeground\]\[ShellNewDatabase "%1"\]</DdeCommand>
      </DdeExec>
      </ShellCommand>
      </ShellCommands>
      </ApplicationURLProtocol>
      </URLProtocol>
      </Extension>
      </Extension>
      </URLProtocols>

Clientes de software: permite que la aplicación se registre como cliente de correo electrónico, lector de noticias o reproductor multimedia y hace que la aplicación sea visible en la interfaz de usuario Establecer acceso al programa y Valores predeterminados del equipo. En la mayoría de los casos, solo es necesario habilitarlo y deshabilitarlo. También hay un control que le permite habilitar o deshabilitar el cliente de correo electrónico solo en caso de que desee que todos los demás clientes permanezcan tal cual.

    <SoftwareClients Enabled="true">
      <ClientConfiguration EmailEnabled="false" />
    </SoftwareClients>

AppPaths: si una aplicación, como contoso.exe, está registrada con un nombre de ruta de aplicación de "myapp", este subsistema le permite abrir la aplicación escribiendo "myapp" en el menú de ejecución.

    <AppPaths Enabled="true">
    <Extensions>
    <Extension Category="AppV.AppPath">
    <AppPath>
      <ApplicationId>\[{ProgramFilesX86}\]\\Microsoft Contoso\\Contoso\\contosomail.EXE</ApplicationId>
      <Name>contosomail.exe</Name>
      <ApplicationPath>\[{ProgramFilesX86}\]\\Microsoft Contoso\\Contoso\\contosomail.EXE</ApplicationPath>
      <PATHEnvironmentVariablePrefix />
      <CanAcceptUrl>false</CanAcceptUrl>
      <SaveUrl />
    </AppPath>
    </Extension>
    </Extensions>
    </AppPaths>

COM: permite que una aplicación registre servidores COM locales. El modo puede ser Integración, Aislado o Desactivado. Cuando Isol.

    <COM Mode="Isolated"/>

Otras opciones de configuración para el archivo de configuración dinámica de usuario

Además de extensiones, los siguientes subsistemas se pueden habilitar o deshabilitar y editar.

Objetos de kernel virtual

    <Objects Enabled="false" />
```xml

**Virtual Registry**: use this if you want to set a registry in the Virtual Registry within HKCU.

```xml
    <Registry Enabled="true">
    <Include>
    <Key Path="\\REGISTRY\\USER\\\[{AppVCurrentUserSID}\]\\Software\\ABC">
    <Value Type="REG\_SZ" Name="Bar" Data="NewValue" />
     </Key>
      <Key Path="\\REGISTRY\\USER\\\[{AppVCurrentUserSID}\]\\Software\\EmptyKey" />
     </Include>
    <Delete>
      </Registry>

Sistema de archivos virtuales

          <FileSystem Enabled="true" />

Fuentes virtuales

          <Fonts Enabled="false" />

Variables de entorno virtual

    <EnvironmentVariables Enabled="true">
    <Include>
           <Variable Name="UserPath" Value="%path%;%UserProfile%" />
           <Variable Name="UserLib" Value="%UserProfile%\\ABC" />
           </Include>
          <Delete>
           <Variable Name="lib" />
            </Delete>
            </EnvironmentVariables>

Servicios virtuales

          <Services Enabled="false" />

UserScripts

Los scripts se pueden usar para configurar o modificar el entorno virtual y ejecutar scripts en la implementación o eliminación, antes de que se ejecute una aplicación, o bien pueden limpiar el entorno una vez finalizada la aplicación. Consulte una salida de archivo de configuración de usuario de ejemplo del secuenciador para ver un script de ejemplo. Para obtener más información sobre los distintos desencadenadores que puede usar para configurar scripts, consulte la sección Scripts .

Archivo de configuración de implementación dinámica

Encabezado del archivo de configuración de implementación dinámica

El encabezado de un archivo de configuración de implementación debe tener un aspecto similar al siguiente:

<?xml version="1.0" encoding="utf-8"?><DeploymentConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/deploymentconfiguration">

PackageId es el mismo valor que el que existe en el archivo de manifiesto.

Cuerpo del archivo de configuración de implementación dinámica

El cuerpo del archivo de configuración de implementación incluye dos secciones:

  • La sección Configuración de usuario permite el mismo contenido que el archivo de configuración de usuario descrito en la sección anterior. Cuando el paquete se publica en un usuario, cualquier configuración de appextensions de esta sección invalidará la configuración correspondiente en el manifiesto dentro del paquete a menos que también se proporcione un archivo de configuración de usuario. Si también se proporciona un archivo UserConfig, se usará en lugar de la configuración de usuario en el archivo de configuración de implementación. Si el paquete se publica globalmente, solo se usará el contenido del archivo de configuración de implementación en combinación con el manifiesto.
  • La sección Configuración de la máquina contiene información que solo se puede configurar para una máquina completa, no para un usuario específico de la máquina. Por ejemplo, HKEY_LOCAL_MACHINE claves del Registro en VFS.
<DeploymentConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/deploymentconfiguration">
<UserConfiguration>
..
</UserConfiguration>
<MachineConfiguration>
..
</MachineConfiguration>
..
</MachineConfiguration>
</DeploymentConfiguration>

Configuración de usuario: para obtener más información sobre esta sección, consulte Configuración dinámica de usuario.

Configuración de la máquina: la sección Configuración de la máquina del archivo de configuración de implementación configura información que solo se puede establecer para una máquina completa, no para un usuario específico del equipo, como las claves del Registro HKEY_LOCAL_MACHINE en el Registro virtual. Este elemento puede tener las cuatro subsecciones siguientes.

Subsistemas

AppExtensions y otros subsistemas se organizan como subnodos en <Subsystems>:

    <MachineConfiguration>
      <Subsystems>
      ..
      </Subsystems>
    ..
    </MachineConfiguration>

En la sección siguiente se describen los distintos subsistemas y ejemplos de uso.

Extensions

Algunos subsistemas (subsistemas de extensión) controlan extensiones que solo se pueden aplicar a todos los usuarios. El subsistema es funcionalidades de aplicación. Dado que este subsistema solo se puede aplicar a todos los usuarios, el paquete debe publicarse globalmente para que este tipo de extensión se integre en el sistema local. Las reglas de los controles y la configuración de extensión de configuración de usuario también se aplican a las de Configuración de máquina.

Funcionalidades de la aplicación

Los programas predeterminados usan la extensión Application Capabilities en la interfaz del sistema operativo Windows; permite que una aplicación se registre como capaz de abrir ciertas extensiones de archivo, como contendiente para la ranura del explorador de Internet del menú Inicio, y como capaz de abrir determinados tipos MIME de Windows. Esta extensión también hace que la aplicación virtual sea visible en la interfaz de usuario Establecer programas predeterminados.

    <ApplicationCapabilities Enabled="true">
      <Extensions>
       <Extension Category="AppV.ApplicationCapabilities">
        <ApplicationCapabilities>
         <ApplicationId>\[{PackageRoot}\]\\LitView\\LitViewBrowser.exe</ApplicationId>
         <Reference>
          <Name>LitView Browser</Name>
          <Path>SOFTWARE\\LitView\\Browser\\Capabilities</Path>
         </Reference>
       <CapabilityGroup>
        <Capabilities>
         <Name>@\[{ProgramFilesX86}\]\\LitView\\LitViewBrowser.exe,-12345</Name>
         <Description>@\[{ProgramFilesX86}\]\\LitView\\LitViewBrowser.exe,-12346</Description>
         <Hidden>0</Hidden>
         <EMailSoftwareClient>Lit View E-Mail Client</EMailSoftwareClient>
         <FileAssociationList>
          <FileAssociation Extension=".htm" ProgID="LitViewHTML" />
          <FileAssociation Extension=".html" ProgID="LitViewHTML" />
          <FileAssociation Extension=".shtml" ProgID="LitViewHTML" />
         </FileAssociationList>
         <MIMEAssociationList>
          <MIMEAssociation Type="audio/mp3" ProgID="LitViewHTML" />
          <MIMEAssociation Type="audio/mpeg" ProgID="LitViewHTML" />
         </MIMEAssociationList>
        <URLAssociationList>
          <URLAssociation Scheme="http" ProgID="LitViewHTML.URL.http" />
         </URLAssociationList>
         </Capabilities>
      </CapabilityGroup>
       </ApplicationCapabilities>
      </Extension>
    </Extensions>
    </ApplicationCapabilities>

Otras opciones de configuración para el archivo de configuración de implementación dinámica

Puede editar otros subsistemas además de las extensiones:

  • Registro virtual de toda la máquina: use este subsistema cuando desee establecer una clave del Registro en el registro virtual dentro de HKEY_Local_Machine.
    <Registry>
    <Include>
      <Key Path="\\REGISTRY\\Machine\\Software\\ABC">
        <Value Type="REG\_SZ" Name="Bar" Data="Baz" />
       </Key>
      <Key Path="\\REGISTRY\\Machine\\Software\\EmptyKey" />
     </Include>
    <Delete>
    </Registry>
  • Objetos de kernel virtual de toda la máquina
    <Objects>
    <NotIsolate>
       <Object Name="testObject" />
     </NotIsolate>
    </Objects>
  • ProductSourceURLOptOut: indica si la dirección URL del paquete se puede modificar globalmente a través de PackageSourceRoot para admitir escenarios de sucursal. Se establece en False de forma predeterminada. Los cambios en el valor surten efecto en el siguiente inicio.
    <MachineConfiguration>
      ..
      <ProductSourceURLOptOut Enabled="true" />
      ..
    </MachineConfiguration>
  • MachineScripts: el paquete se puede configurar para ejecutar scripts tras la implementación, publicación o eliminación. Para ver un script de ejemplo, vea un archivo de configuración de implementación de ejemplo generado por el secuenciador. En la sección siguiente se proporciona más información sobre los distintos desencadenadores que puede usar para configurar scripts.

  • TerminateChildProcess: puede usar este subsistema para especificar que los procesos secundarios de un ejecutable de aplicación se terminarán cuando finalice el proceso de application.exe.

    <MachineConfiguration>
      ..
      <TerminateChildProcesses>
        <Application Path="\[{PackageRoot}\]\\Contoso\\ContosoApp.EXE" />
        <Application Path="\[{PackageRoot}\]\\LitView\\LitViewBrowser.exe" />
        <Application Path="\[{ProgramFilesX86}\]\\Microsoft Contoso\\Contoso\\contosomail.EXE" />
      </TerminateChildProcesses>
      ..
    </MachineConfiguration>

Scripts

En la tabla siguiente se describen los distintos eventos de script y el contexto en el que se pueden ejecutar.

Tiempo de ejecución del script Se puede especificar en Configuración de implementación Se puede especificar en Configuración de usuario Se puede ejecutar en el entorno virtual del paquete. Se puede ejecutar en el contexto de una aplicación específica Ejecuciones en el contexto del sistema o usuario: (Configuración de implementación, Configuración de usuario)
AddPackage X (SYSTEM, N/A)
PublishPackage X X (SYSTEM, User)
UnpublishPackage X X (SYSTEM, User)
RemovePackage X (SYSTEM, N/A)
StartProcess X X X X (Usuario, usuario)
ExitProcess X X X (Usuario, usuario)
StartVirtualEnvironment X X X (Usuario, usuario)
TerminateVirtualEnvironment X X (Usuario, usuario)

Uso de varios scripts en un único desencadenador de eventos

App-V admite el uso de varios scripts en un único desencadenador de eventos para paquetes de App-V, incluidos los paquetes que se convierten de App-V 4.6 a App-V para el cliente de Windows. Para habilitar el uso de varios scripts, App-V usa una aplicación de iniciador de scripts, denominada ScriptRunner.exe, que se incluye en el cliente de App-V.

Uso de varios scripts en un único desencadenador de eventos

Para cada script que quiera ejecutar, pase ese script como argumento a la aplicación ScriptRunner.exe. La aplicación ejecutará cada script por separado, junto con los argumentos que especifique para cada script. Use solo un script (ScriptRunner.exe) por desencadenador.

Nota

Se recomienda ejecutar primero la línea de varios scripts desde un símbolo del sistema para asegurarse de que todos los argumentos se compilan correctamente antes de agregarlos al archivo de configuración de implementación.

Descripciones de script y parámetros de ejemplo

Con el archivo y la tabla de ejemplo siguientes, modifique el archivo de configuración de implementación o de usuario para agregar los scripts que desea ejecutar.

<MachineScripts>
 <AddPackage>
   <Path>ScriptRunner.exe</Path>
   <Arguments>
   -appvscript script1.exe arg1 arg2 –appvscriptrunnerparameters –wait –timeout=10
   -appvscript script2.vbs arg1 arg2
   -appvscript script3.bat arg1 arg2 –appvscriptrunnerparameters –wait –timeout=30 –rollbackonerror
   </Arguments>
   <Wait timeout=”40” RollbackOnError=”true”/>
 </AddPackage>
</MachineScripts>
Parámetro en el archivo de ejemplo Descripción
<AddPackage> Nombre del desencadenador de eventos para el que se ejecuta un script, como al agregar o publicar un paquete.
ScriptRunner.exe La aplicación del iniciador de scripts incluida en el cliente de App-V.

Aunque ScriptRunner.exe se incluye en el cliente de App-V, la ubicación del cliente de App-V debe estar en %path% o ScriptRunner no se ejecutará. ScriptRunner.exe normalmente se encuentra en la carpeta C:\Archivos de programa\Microsoft Application Virtualization\Client.
-appvscript script1.exe arg1 arg2 –appvscriptrunnerparameters –wait –timeout=10

-appvscript script2.vbs arg1 arg2

-appvscript script3.bat arg1 arg2 –appvscriptrunnerparameters –wait –timeout=30 -rollbackonerror
-appvscript:token que representa el script real que desea ejecutar.
script1.exe—nombre del script que desea ejecutar.
arg1 arg2—argumentos para el script que desea ejecutar.
-appvscriptrunnerparameters:token que representa las opciones de ejecución para script1.exe.
-wait:token que indica a ScriptRunner que espere a que finalice la ejecución de script1.exe antes de continuar con el siguiente script.
-timeout=x:token que informa a ScriptRunner de que deje de ejecutar el script actual después de x número de segundos. Todos los demás scripts especificados seguirán ejecutándose.
-rollbackonerror:token que indica a ScriptRunner que deje de ejecutar todos los scripts que aún no se han ejecutado y revierta un error en el cliente de App-V.
<Wait timeout=”40” RollbackOnError=”true”/> Espera a la finalización general de ScriptRunner.exe.

Establezca el valor de tiempo de espera para que el ejecutor global sea mayor o igual que la suma de los valores de tiempo de espera en los scripts individuales.

Si algún script individual ha notificado un error y rollbackonerror se ha establecido en True, ScriptRunner debería notificar el error al cliente de App-V.

ScriptRunner ejecutará cualquier script cuyo tipo de archivo esté asociado a una aplicación instalada en el equipo. Si falta la aplicación asociada o el tipo de archivo del script no está asociado a ninguna de las aplicaciones del equipo, el script no se ejecutará.

Creación de un archivo de configuración dinámica mediante un archivo de manifiesto de App-V

Puede crear el archivo de configuración dinámica mediante uno de los tres métodos: manualmente, mediante la consola de administración de App-V o mediante la secuenciación de un paquete, que generará un paquete con dos archivos de ejemplo.

Para obtener más información sobre cómo crear el archivo mediante la consola de administración de App-V, consulte Creación de un archivo de configuración personalizada mediante la consola de administración de App-V.

Para crear el archivo manualmente, puede combinar los componentes enumerados en las secciones anteriores en un solo archivo. Sin embargo, se recomienda usar los archivos generados por el secuenciador en lugar de los creados manualmente.