如何转换在以前版本的 App-V 中创建的包

适用于:

  • Windows 10
  • Windows 11

可以使用包转换器实用工具升级以前版本的 App-V 创建的虚拟应用程序包。 本部分将介绍如何转换现有虚拟应用程序包进行升级。

注意

如果运行的是具有 64 位体系结构的计算机,则必须使用 x86 版本的 Windows PowerShell。

包转换器只能直接转换由 App-V 排序器 4.5 或更高版本创建的包。 使用低于 4.5 的 App-V 版本创建的包必须在转换之前至少升级到 App-V 4.5。

重要提示

为了保证文件的安全,必须将包转换器配置为始终将包成分文件保存到只有管理员才能访问的安全位置和目录。 部署包时,应将包保存到安全位置,或者确保转换过程中没有其他用户可以登录。

App-V 4.6 安装文件夹重定向到虚拟文件系统根目录

将包从 App-V 4.6 转换为 App-V for Windows 10/11 时,App-V for Windows 客户端包可以访问创建 4.6 包时需要使用的硬编码驱动器。 驱动器号将是你在 4.6 排序计算机上选择作为安装驱动器的驱动器。 (默认驱动器为驱动器 Q.)

App-V 包转换器会将 App-V 4.6 安装根文件夹和短文件夹名称保存在 filesystem 元素的 FilesystemMetadata.xml 文件中。 当 App-V for Windows 客户端创建虚拟进程时,它将请求从 App-V 4.6 安装根目录映射到虚拟文件系统根目录。

入门

  1. 在环境中的计算机上安装 App-V Sequencer。 有关如何安装 Sequencer 的信息,请参阅 如何安装 Sequencer

  2. 可以输入以下 cmdlet 以检查或转换包:

    • Test-AppvLegacyPackage - 此 cmdlet 检查包。 它将返回有关包的任何失败的信息,例如缺少 .sft 文件、无效的源、 .osd 文件错误或无效的包版本。 此 cmdlet 不会分析 .sft 文件或执行任何深入验证。 有关此 cmdlet 的选项和基本功能的信息,请使用 Windows PowerShell,输入以下 cmdlet:

      Test-AppvLegacyPackage -?
      
    • ConvertFrom-AppvLegacyPackage - 此 cmdlet 将包从旧版本转换为更新版本。 若要转换现有包,请输入以下 cmdlet:

      ConvertFrom-AppvLegacyPackage C:\contentStore C:\convertedPackages
      

      在此 cmdlet 中, C:\contentStore 表示现有包的位置,是 C:\convertedPackages 生成的 Windows 客户端虚拟应用程序包文件将保存到的输出目录。 默认情况下,如果未指定新名称,将使用旧包名称。

      此外,包转换器通过将包设置为流式处理 App-V 包故障来优化适用于 Windows 客户端的 App-V 中包的性能。  此设置定义比主要功能块的性能更高,并且完全下载包。 使用“DownloadFullPackageOnFirstLaunch”标志可以转换包,并将包设置为默认情况下完全下载。

      注意

      在指定输出目录之前,必须创建输出目录。

高级转换提示

  • 管道 - Windows PowerShell支持管道。 管道允许输入 cmdlet,如以下示例所示:

    dir C:\contentStore\myPackage | Test-AppvLegacyPackage
    

    在此示例中,表示的 myPackage 目录对象将作为 Test-AppvLegacyPackage cmdlet 的输入提供,并绑定到 -Source 参数。 如果要将命令批处理在一起(如以下示例 cmdlet 中所示)时,像这样的管道尤其有用:

    dir .\ | Test-AppvLegacyPackage | ConvertFrom-AppvLegacyAppvPackage -Target .\ConvertedPackages
    

    此管道示例命令测试包,然后传递对象以进行转换。 还可以对包应用筛选器,而不会出错,或者仅指定包含 .sprj 文件的目录,或通过管道将其传递给另一个 cmdlet,该 cmdlet 将筛选后的包添加到服务器或将其发布到 App-V 客户端。

  • 批处理 - Windows PowerShell 命令启用批处理。 更具体地说,cmdlet 支持为表示目录路径列表的 -Source 参数获取 string[] 对象。 此功能允许一起输入以下 cmdlet:

    $packages = dir C:\contentStore
    ConvertFrom-AppvLegacyAppvPackage-Source $packages -Target C:\ConvertedPackages
    

    或者,可以使用如下所示的管道:

    dir C:\ContentStore | ConvertFrom-AppvLegacyAppvPackage -Target C:\ConvertedPackages
    
  • 其他功能 - Windows PowerShell具有别名、延迟绑定、.NET 对象等功能的其他内置功能。 这些功能可帮助创建包转换器的高级方案。