【发布时间】: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
文档指出,为了提供包,必须满足以下要求。
- 您必须是管理员
- 要配置的应用包必须暂存
- 要配置的应用程序包必须在系统卷上。 (
C:\System Volume Information)
我有信心满足前两个要求,因为我是一名管理员,并且我正在以没有明显错误的代码暂存包。
但是,我认为我不符合第三个要求。 must be on the system volume 到底是什么意思?有没有办法以编程方式将应用程序包添加到系统卷?我只需要在那里复制appx文件吗? Windows 似乎不希望允许对C:\System Volume Information 文件夹进行任何形式的访问。
我做错了什么,导致我在尝试配置我的应用程序时看到这种不一致的部分成功?
【问题讨论】:
-
如果将包复制到系统卷,这个问题是否可以解决?
-
Windows 似乎拒绝访问该文件夹,即使程序以管理员身份运行也是如此。因此,简单地将 appx 复制到该文件夹似乎在生产中是不可靠的。这让我觉得有一些更正式的方式可以让应用程序进入系统卷。