Sobre a configuração dinâmica do App-V

Aplica-se a:

  • Windows 10
  • Windows 11

Você pode usar a configuração dinâmica para personalizar um pacote App-V para um usuário. Este artigo informará como criar ou editar um arquivo de configuração dinâmica existente.

Quando você edita o arquivo configuração dinâmica, ele personaliza como um pacote App-V será executado para um usuário ou grupo. Portanto, a personalização do pacote torna-se mais conveniente removendo a necessidade de ressequear pacotes usando as configurações desejadas e fornece uma maneira de manter o conteúdo do pacote e as configurações personalizadas independentes.

Avançado: configuração dinâmica

Os pacotes de aplicativos virtuais contêm um manifesto que fornece todas as informações principais para o pacote. Essas informações incluem os padrões para as configurações do pacote e determina as configurações no formulário mais básico (sem personalização adicional). Se você quiser ajustar esses padrões para um determinado usuário ou grupo, poderá criar e editar os seguintes arquivos:

  • Arquivo de configuração do usuário
  • Arquivo de configuração de implantação

Esses arquivos .xml especificam configurações de pacote, permitindo personalizar pacotes sem afetar diretamente os pacotes. Quando um pacote é criado, o sequenciador gera automaticamente a implantação padrão e a configuração do usuário .xml arquivos usando os dados do manifesto do pacote. Esses arquivos de configuração gerados automaticamente refletem as configurações padrão do pacote que foram configuradas durante o sequenciamento. Se você aplicar esses arquivos de configuração a um pacote no formulário gerado pelo sequenciador, os pacotes terão as mesmas configurações padrão que vieram de seu manifesto. Esse resultado fornece um modelo específico do pacote para começar se algum dos padrões precisar ser alterado.

Observação

As informações a seguir só podem ser usadas para modificar arquivos de configuração gerados pelo sequenciador para personalizar pacotes para atender aos requisitos específicos do usuário ou do grupo.

Conteúdo do arquivo de Configuração Dinâmica

Todas as adições, exclusões e atualizações nos arquivos de configuração precisam ser feitas em relação aos valores padrão especificados pelas informações de manifesto do pacote. A lista a seguir representa a relação entre esses arquivos em como eles serão lidos, da maioria para a menor precedência:

  • Arquivo .xml de configuração do usuário
  • Arquivo .xml de configuração de implantação
  • Manifesto do Pacote

O primeiro item representa o que será lido por último. Portanto, seu conteúdo tem precedência. Todos os pacotes contêm e fornecem configurações padrão do Manifesto do Pacote, mas também têm a menor precedência. Se você aplicar um arquivo de configuração de implantação .xml com configurações personalizadas, ele substituirá os padrões do Manifesto do Pacote. Se você aplicar um arquivo de configuração de usuário .xml com configurações personalizadas antes da substituição dos padrões do Manifesto do Pacote, ele substituirá a configuração de implantação e os padrões do Manifesto do Pacote.

Há dois tipos de arquivos de configuração:

  • Arquivo de configuração de usuário (UserConfig): permite especificar ou modificar configurações personalizadas para um pacote. Essas configurações serão aplicadas a um usuário específico quando o pacote for implantado em um computador que executa o cliente App-V.
  • Arquivo de configuração de implantação (DeploymentConfig): permite especificar ou modificar as configurações padrão de um pacote. Essas configurações serão aplicadas a todos os usuários quando um pacote for implantado em um computador que executa o cliente App-V.

Você pode usar o arquivo UserConfig para personalizar as configurações de um pacote para um conjunto específico de usuários em um computador ou fazer alterações que serão aplicadas a locais de usuário locais, como HKCU. Você pode usar o arquivo DeploymentConfig para modificar as configurações padrão de um pacote para todos os usuários em um computador ou fazer alterações que serão aplicadas a locais globais, como HKEY_LOCAL_MACHINE e a pasta Todos os Usuários.

O arquivo UserConfig fornece configurações que podem ser aplicadas a um único usuário sem afetar outros usuários em um cliente:

  • Extensões que serão integradas ao sistema nativo por usuário: atalhos, associações de File-Type, Protocolos de URL, AppPaths, Clientes de Software e COM.
  • Subsistemas virtuais: objetos de aplicativo, variáveis de ambiente, modificações do Registro, Serviços e Fontes.
  • Scripts (somente contexto do usuário).

O arquivo DeploymentConfig fornece configurações em duas seções, uma relativa ao contexto do computador e outra relativa ao contexto do usuário, fornecendo os mesmos recursos listados na lista userConfig anterior:

  • Todas as configurações do UserConfig da seção anterior neste tópico
  • Extensões que só podem ser aplicadas globalmente para todos os usuários
  • Subsistemas virtuais que podem ser configurados para locais de máquina global, como o registro
  • URL de origem do produto
  • Scripts (somente contexto do computador)
  • Controles para encerrar processos filho

Estrutura de arquivos

A estrutura do arquivo Configuração Dinâmica do App-V é explicada na seção a seguir.

Arquivo de configuração dinâmica do usuário

Um exemplo do cabeçalho de um arquivo de Configuração dinâmica do usuário é:

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

O PackageId é o mesmo valor que existe no arquivo Manifest.

Corpo do arquivo configuração dinâmica do usuário

O corpo do arquivo configuração dinâmica do usuário pode incluir todos os pontos de extensão de aplicativo definidos no arquivo Manifest e as informações para configurar aplicativos virtuais. Há quatro subseções permitidas no corpo:

Aplicativos: todas as extensões de aplicativo contidas no arquivo Manifest dentro de um pacote são atribuídas com uma ID do Aplicativo, que também é definida no arquivo de manifesto. Isso permite habilitar ou desabilitar todas as extensões de um determinado aplicativo em um pacote. A ID do aplicativo deve existir no arquivo Manifest ou será ignorada.

    <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 e outros subsistemas são organizados como subnodos em <Subsystems>, conforme mostrado no exemplo a seguir.

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

Cada subsistema pode ser habilitado/desabilitado usando o atributo Habilitado . As seções a seguir descrevem os vários subsistemas e exemplos de uso.

Extensões de arquivo de configuração dinâmica do usuário

Extensões de controle de subsistemas de extensão. Esses subsistemas são Atalhos, associações File-Type, Protocolos de URL, AppPaths, Clientes de Software e COM.

Os subsistemas de extensão podem ser habilitados e desabilitados independentemente do conteúdo.  Portanto, se os atalhos estiverem habilitados, o cliente usará os atalhos contidos no manifesto por padrão. Cada Subsistema de Extensão pode conter um <Extensions> nó. Se esse elemento filho estiver presente, o cliente ignorará o conteúdo no arquivo Manifest para esse subsistema e usará apenas o conteúdo no arquivo de configuração.

Exemplos do subsistema de atalhos

Exemplo 1

O conteúdo será ignorado se o usuário definir as seguintes sintaxes no arquivo de configuração dinâmica ou de implantação:

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

Exemplo 2

O conteúdo no manifesto será integrado durante a publicação se o usuário definir apenas a seguinte sintaxe:


                                    `<Shortcuts  Enabled="true"/>`

Exemplo 3

Todos os atalhos no manifesto serão ignorados e nenhum atalho será integrado se o usuário definir as seguintes sintaxes:

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

Subsistemas de extensão com suporte

Atalhos: esse subsistema controla atalhos que serão integrados ao sistema local. O exemplo a seguir tem dois atalhos:

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

Associações de tipo de arquivo: associa tipos de arquivo a programas para abrir por padrão e configurar o menu de contexto. (Tipos MIME também podem ser configurados com esse subsistema.) Um exemplo de uma associação FileType é:

    <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 URL: esse subsistema controla os Protocolos de URL integrados ao registro local do computador cliente. O exemplo a seguir ilustra o 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 o aplicativo se registre como um cliente de email, leitor de notícias ou media player e torna o aplicativo visível na interface do usuário Definir Acesso ao Programa e Padrões de Computador. Na maioria dos casos, você só precisa habilitá-lo e desabilitá-lo. Há também um controle que permite habilitar ou desabilitar o cliente de email somente no caso de desejar que todos os outros clientes permaneçam como estão.

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

AppPaths: se um aplicativo, como contoso.exe, for registrado com um nome apppath de "myapp", esse subsistema permitirá que você abra o aplicativo inserindo "myapp" no menu de execução.

    <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 um aplicativo registre servidores COM locais. O modo pode ser Integração, Isolado ou Desativado. Quando Isol.

    <COM Mode="Isolated"/>

Outras configurações para o arquivo configuração dinâmica do usuário

Além das Extensões, os outros subsistemas a seguir podem ser habilitados/desabilitados e editados.

Objetos Kernel Virtuais

    <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 Arquivos Virtuais

          <FileSystem Enabled="true" />

Fontes Virtuais

          <Fonts Enabled="false" />

Variáveis de ambiente virtual

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

Serviços virtuais

          <Services Enabled="false" />

Userscripts

Os scripts podem ser usados para configurar ou alterar o ambiente virtual e executar scripts na implantação ou remoção, antes que um aplicativo seja executado ou possam limpo o ambiente após o término do aplicativo. Consulte uma saída de arquivo de configuração de usuário de exemplo pelo sequenciador para ver um script de exemplo. Para obter mais informações sobre os vários gatilhos que você pode usar para configurar scripts, consulte a seção Scripts .

Arquivo configuração de implantação dinâmica

Cabeçalho de arquivo configuração de implantação dinâmica

O cabeçalho de um arquivo de Configuração de Implantação deve ser semelhante a este:

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

O PackageId é o mesmo valor que o que existe no arquivo Manifest.

Corpo do arquivo configuração de implantação dinâmica

O corpo do arquivo de configuração de implantação inclui duas seções:

  • A seção Configuração do Usuário permite o mesmo conteúdo que o arquivo de Configuração de Usuário descrito na seção anterior. Quando o pacote é publicado para um usuário, todas as configurações de configuração de aplicativosextensões nesta seção substituirão as configurações correspondentes no Manifesto dentro do pacote, a menos que um arquivo de configuração do usuário também seja fornecido. Se um arquivo UserConfig também for fornecido, ele será usado em vez das configurações do Usuário no arquivo de configuração de implantação. Se o pacote for publicado globalmente, apenas o conteúdo do arquivo de configuração de implantação será usado em combinação com o manifesto.
  • A seção Configuração do Computador contém informações que só podem ser configuradas para um computador inteiro, não para um usuário específico no computador. Por exemplo, HKEY_LOCAL_MACHINE chaves do registro no VFS.
<DeploymentConfiguration PackageId="1f8488bf-2257-46b4-b27f-09c9dbaae707" DisplayName="Reserved" xmlns="http://schemas.microsoft.com/appv/2010/deploymentconfiguration">
<UserConfiguration>
..
</UserConfiguration>
<MachineConfiguration>
..
</MachineConfiguration>
..
</MachineConfiguration>
</DeploymentConfiguration>

Configuração do usuário: para obter mais informações sobre esta seção, consulte Configuração dinâmica do usuário.

Configuração do Computador: a seção Configuração do Computador do Arquivo de Configuração de Implantação configura informações que só podem ser definidas para um computador inteiro, não um usuário específico no computador, como as chaves do registro HKEY_LOCAL_MACHINE no Registro Virtual. Esse elemento pode ter as quatro subseções a seguir.

Subsistemas

AppExtensions e outros subsistemas são organizados como subnodos em <Subsystems>:

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

A seção a seguir descreve os vários subsistemas e exemplos de uso.

Extensões

Alguns subsistemas (Subsistemas de Extensão) controlam extensões que só podem ser aplicadas a todos os usuários. O subsistema são recursos de aplicativo. Como esse subsistema só pode ser aplicado a todos os usuários, o pacote deve ser publicado globalmente para que esse tipo de extensão seja integrado ao sistema local. As regras para controles e configurações de extensão de Configuração de Usuário também se aplicam às da Configuração do Computador.

Funcionalidades do aplicativo

A extensão Recursos do Aplicativo é usada por programas padrão na interface do sistema operacional Windows; ele permite que um aplicativo se registre como capaz de abrir determinadas extensões de arquivo, como um concorrente para o slot do navegador da Internet do menu Iniciar e como capaz de abrir determinados tipos de MIME do Windows. Essa extensão também torna o aplicativo virtual visível na interface do usuário Definir Programas Padrão.

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

Outras configurações para o arquivo Configuração de Implantação Dinâmica

Você pode editar outros subsistemas além de extensões:

  • Registro Virtual em toda a máquina: use esse subsistema quando quiser definir uma chave de registro no registro virtual em 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 kernel virtuais em toda a máquina
    <Objects>
    <NotIsolate>
       <Object Name="testObject" />
     </NotIsolate>
    </Objects>
  • ProductSourceURLOptOut: indica se a URL do pacote pode ser modificada globalmente por meio do PackageSourceRoot para dar suporte a cenários de branch office. Ele é definido como False por padrão. As alterações no valor entrarão em vigor no próximo lançamento.
    <MachineConfiguration>
      ..
      <ProductSourceURLOptOut Enabled="true" />
      ..
    </MachineConfiguration>
  • MachineScripts: o pacote pode ser configurado para executar scripts após a implantação, publicação ou remoção. Para ver um script de exemplo, consulte um arquivo de configuração de implantação de exemplo gerado pelo sequenciador. A seção a seguir fornece mais informações sobre os vários gatilhos que você pode usar para configurar scripts.

  • TerminateChildProcess: você pode usar esse subsistema para especificar que os processos filho de um executável de aplicativo serão encerrados quando o processo de application.exe for encerrado.

    <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

A tabela a seguir descreve os vários eventos de script e o contexto em que eles podem ser executados.

Tempo de execução do script Pode ser especificado na Configuração de Implantação Pode ser especificado na Configuração do Usuário Pode ser executado no ambiente virtual do pacote Pode ser executado no contexto de um aplicativo específico É executado no contexto do sistema/usuário: (Configuração de Implantação, Configuração do Usuário)
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 (Usuário, Usuário)
Exitprocess X X X (Usuário, Usuário)
StartVirtualEnvironment X X X (Usuário, Usuário)
TerminateVirtualEnvironment X X (Usuário, Usuário)

Usando vários scripts em um único gatilho de evento

O App-V dá suporte ao uso de vários scripts em um único gatilho de evento para pacotes app-V, incluindo pacotes que você converte do App-V 4.6 para App-V para cliente Windows. Para habilitar o uso de vários scripts, o App-V usa um aplicativo de inicializador de script, chamado ScriptRunner.exe, que está incluído no cliente App-V.

Como usar vários scripts em um único gatilho de evento

Para cada script que você deseja executar, passe esse script como um argumento para o aplicativo ScriptRunner.exe. O aplicativo executará cada script separadamente, juntamente com os argumentos que você especificar para cada script. Use apenas um script (ScriptRunner.exe) por gatilho.

Observação

Recomendamos que você primeiro execute a linha de vários scripts de um prompt de comando para garantir que todos os argumentos sejam criados corretamente antes de adicioná-los ao arquivo de configuração de implantação.

Script de exemplo e descrições de parâmetro

Usando o arquivo e a tabela de exemplo a seguir, modifique a implantação ou o arquivo de configuração do usuário para adicionar os scripts que você deseja executar.

<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 no arquivo de exemplo Descrição
<AddPackage> Nome do gatilho de evento para o qual você está executando um script, como ao adicionar ou publicar um pacote.
ScriptRunner.exe O aplicativo de inicializador de script incluído no cliente App-V.

Embora ScriptRunner.exe esteja incluído no cliente App-V, a localização do cliente App-V deve estar em %path% ou o ScriptRunner não será executado. ScriptRunner.exe normalmente está localizado na pasta C:\Program Files\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 o script real que você deseja executar.
script1.exe— nome do script que você deseja executar.
arg1 arg2— argumentos para o script que você deseja executar.
-appvscriptrunnerparameters— token que representa as opções de execução para script1.exe.
-wait— token que diz ao ScriptRunner para aguardar a execução do script1.exe para concluir antes de prosseguir para o próximo script.
-timeout=x— token que informa o ScriptRunner para parar de executar o script atual após x número de segundos. Todos os outros scripts especificados ainda serão executados.
-rollbackonerror— token que informa ao ScriptRunner para parar de executar todos os scripts que ainda não foram executados e reverter um erro para o cliente App-V.
<Wait timeout=”40” RollbackOnError=”true”/> Aguarda a conclusão geral do ScriptRunner.exe.

Defina o valor de tempo limite para que o corredor geral seja maior ou igual à soma dos valores de tempo limite nos scripts individuais.

Se algum script individual relatou um erro e o rollbackonerror foi definido como True, o ScriptRunner deverá relatar o erro ao cliente App-V.

O ScriptRunner executará qualquer script cujo tipo de arquivo esteja associado a um aplicativo instalado no computador. Se o aplicativo associado estiver ausente ou o tipo de arquivo do script não estiver associado a nenhum dos aplicativos do computador, o script não será executado.

Criar um arquivo de Configuração Dinâmica usando um arquivo manifesto do App-V

Você pode criar o arquivo configuração dinâmica usando um dos três métodos: manualmente, usando o Console de Gerenciamento do App-V ou sequenciando um pacote, que gerará um pacote com dois arquivos de exemplo.

Para obter mais informações sobre como criar o arquivo usando o Console de Gerenciamento do App-V, consulte Como criar um arquivo de Configuração Personalizada usando o Console de Gerenciamento do App-V.

Para criar o arquivo manualmente, você pode combinar os componentes listados nas seções anteriores em um único arquivo. No entanto, recomendamos que você use arquivos gerados pelo sequenciador em vez dos criados manualmente.