使用ProvisionPackageForAllUsersAsync

时间:2019-03-06 21:39:46

标签: c# uwp appx

我正在尝试使用ProvisionPackageForAllUsersAsync在计算机上为所有用户安装UWP软件包,但结果不一。有时,应用程序安装就很好。有时,有些用户获得更新,而有些则没有。

这是我的代码:

var packageManager = new PackageManager();

var stage = packageManager.StagePackageAsync(new Uri(appxPath), null);

while (stage.Status == Windows.Foundation.AsyncStatus.Started)
{
    Thread.Sleep(100);
}

//check for error

var provision = packageManager.ProvisionPackageForAllUsersAsync(familyName);

while (provision.Status == Windows.Foundation.AsyncStatus.Started)
{
    Thread.Sleep(100);
}

//check for error

文档指出,要提供软件包,必须满足以下要求。

  1. 您必须是管理员
  2. 必须预配要提供的应用程序包
  3. 要供应的应用程序包必须在系统卷上。 (C:\System Volume Information

作为管理员,我有信心满足前两个要求,并且正在以无明显错误的代码分阶段安装软件包。

但是,我认为我没有达到第三个要求。 must be on the system volume到底是什么意思?有没有办法以编程方式将应用程序包添加到系统卷?我是否只需要将appx文件复制到那里? Windows似乎不想允许对C:\System Volume Information文件夹的任何访问。

我在做错什么,这导致我在尝试配置我的应用程序时看到这种不一致的部分成功?

1 个答案:

答案 0 :(得分:0)

我不知道,但我认为“系统卷”是指安装 Windows 的磁盘或驱动器。通常它是 C:\ 但不要认为这是理所当然的。 Windows 可以安装在任何驱动器上,因此没有特别说明要将软件包复制到 C:\ 驱动器:

<块引用>

要配置的应用包必须是暂存的,并且必须在 系统音量。

隐藏的系统卷信息是用于系统还原、内容索引服务等其他内容,而不是用于保存应用程序包。