【问题标题】:Installing UWP Package with ProvisionPackageForAllUsersAsync使用 ProvisionPackageForAllUsersAsync 安装 UWP 包
【发布时间】:2019-03-06 21:39:46
【问题描述】:

我正在尝试使用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 文件夹进行任何形式的访问。

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

【问题讨论】:

  • 如果将包复制到系统卷,这个问题是否可以解决?
  • Windows 似乎拒绝访问该文件夹,即使程序以管理员身份运行也是如此。因此,简单地将 appx 复制到该文件夹​​似乎在生产中是不可靠的。这让我觉得有一些更正式的方式可以让应用程序进入系统卷。
  • 你可能需要检查这个:support.microsoft.com/en-sg/help/309531/…

标签: c# uwp appx


【解决方案1】:

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

要配置的应用程序包必须暂存,并且必须处于开启状态 系统音量。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2018-01-14
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多