本地部署和从应用商店部署时的不同应用行为

2023-12-10

从 Windows 应用商店(测试版)部署应用程序时,我遇到奇怪的问题。该应用程序被编写为 Windows Phone 8.1 RunTime。

我有一个用 C++/C# 编写的小型 Windows 运行时组件,用于检查文件是否存在:

bool FileEx::FileExists(String^ path)
{
    std::wstring pathW(path->Begin());
    std::string myPath(pathW.begin(), pathW.end());
    FILE *file = NULL;
    if (fopen_s(&file, myPath.c_str(), "r") == 0)
    {
         fclose(file);
         return true;
    }
    else return false;
}

测试方法:

现在让我们用两个文件来测试它 - 一个在本地文件夹中创建,一个在 MusicLibrary 的文件夹中创建。一切都在主项目中完成,该项目在 C++/C# 中使用上述方法引用了 WRC。

const string localFileName = "local.txt";
const string musicFileName = "music.txt";
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
StorageFolder musicFolder = await KnownFolders.MusicLibrary.CreateFolderAsync("MyFolder", CreationCollisionOption.OpenIfExists);
await localFolder.CreateFileAsync(localFileName, CreationCollisionOption.ReplaceExisting); // create local file
await musicFolder.CreateFileAsync(musicFileName, CreationCollisionOption.ReplaceExisting); // create file in MusicLibrary

a) 本地文件 拳头 - 使用纯 C# 进行测试:

// First check with C# if file exists - LOCAL FILE
StorageFile checkFile = null;
try { checkFile = await localFolder.GetFileAsync(localFileName); }
catch { checkFile = null; }
if (checkFile != null) await Trace.WriteLineAsync(false, "File exists with path = {0}", checkFile.Path);
else await Trace.WriteLineAsync(false, "File doesn't exist with path = {0}", checkFile.Path);

第二个带有书面成分:

Exception exc = null;
bool check = false;
try
{
    string path = string.Format(@"{0}\{1}", localFolder.Path, localFileName);
    await Trace.WriteLineAsync(false, "Attempt with WRC path = {0}", path);
    check = FileEx.FileExists(path);
}
catch (Exception ex) { exc = ex; }
if (exc != null) await Trace.WriteLineAsync(false, "Exception WRC");
else await Trace.WriteLineAsync(false, "No exception WRC, file exists = {0}", check);

b) 与音乐库文件夹中的文件相同:

拳头 - 使用纯 C# 进行测试:

checkFile = null;
try { checkFile = await musicFolder.GetFileAsync(musicFileName); }
catch { checkFile = null; }
if (checkFile != null) await Trace.WriteLineAsync(false, "File exists with path = {0}", checkFile.Path);
else await Trace.WriteLineAsync(false, "File doesn't exist with path = {0}", checkFile.Path);

第二个带有书面成分:

check = false;
exc = null;
try
{
   string path = string.Format(@"{0}\{1}", musicFolder.Path, musicFileName);
   await Trace.WriteLineAsync(false, "Attempt with WRC path = {0}", path);
   check = FileEx.FileExists(path);
}
catch (Exception ex) { exc = ex; }
if (exc != null) await Trace.WriteLineAsync(false, "Exception WRC");
else await Trace.WriteLineAsync(false, "No exception WRC, file exists = {0}", check);

RESULTS:

任何情况下都不例外,正如纯 C# 方法所示,这两个文件在创建后都存在。正如您在下面的图片中看到的,当通过 Visual Studio 部署应用程序时,它可以正常工作,运行时组件显示这两个文件,但是当从商店下载应用程序时,情况有所不同 - WRC 方法适用于本地文件,但是不适用于 MusicLibrary 中的这些。

local deployment

store deployment

问题:

在这两种情况下,文件路径相同,在两种部署中运行时组件都可以工作,因此第一个文件存在。尽管在中设置了所有必要的功能,但 Windows 运行时组件似乎无法访问 MusicLibrarypackageappx.manifest文件(本地部署有效)。

有谁知道为什么 Windows 运行时组件无法访问 MusicLibrary 中的文件? Windows 运行时组件是否需要一些额外的功能?
有什么办法让它发挥作用吗?


商店的行为是正确的:应用程序没有对其安装文件夹和应用程序数据文件夹之外的文件系统的权限。 Win32 和 C 运行时函数直接访问文件,因此需要直接访问权限。

StorageFile 类与文件代理配合使用,因此可以利用声明的功能等。代理代表应用程序读取文件并通过 StorageFile 流式传输文件内容。

应用程序必须使用 StorageFile 来读取或写入其应用程序数据和安装位置之外的文件

我们已标记测试和生产之间的行为差​​异以供调查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地部署和从应用商店部署时的不同应用行为 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 在 MS-SQL 中将行数据分组并求和到列中?

    原始问题 我不知道我是否应该提出一个新问题或取消标记最后一个问题 所以 我想做的是 WorkWeek Catg Item Cost WorkWeek1 Cat1 Item1 Price WorkWeek1 Cat1 Item2 Price
  • 使用正则表达式删除 JavaScript

    我无法使用 C 从 HTML 页面中删除所有 javascript 我有三个正则表达式 它们删除了很多 但也错过了很多 使用 MSHTML DOM 解析器解析 javascript 会导致 javascript 实际运行 这是我试图通过使用
  • Bootstrap / CSS - 输入、按钮和选择在同一行

    我试图使用 bootstrap css 将输入 按钮和选择放在同一行中 但是select 根据其内容大小 将转到下一行 如下所示 我能做些什么 这是 HTML 的部分 div class form inline div class form
  • {}.toString() 未捕获的语法错误:意外的标记

    当我在 chrome 开发工具中尝试时 它显示Uncaught SyntaxError Unexpected token 但是 如果当它分配给a var a toString a object Object 是什么造成了这种差异 是什么造成
  • CoffeeScript 的存在运算符如何工作?

    Coffeescript 使用存在运算符来确定变量何时存在 并且在咖啡脚本文档它表明something 将编译为something undefined something null但是我注意到我的咖啡脚本版本只是将其编译为something
  • 如何使用 Prolog 删除列表中的偶数

    我需要删除第一个列表中的所有偶数并将其余的保存到第二个列表中 我的第一个非工作方法是 remove even remove even H1 T1 H2 T2 H1 mod 2 0 remove even T1 remove even H1
  • 在SQL中批量插入.txt文件

    我正在尝试将 txt 文件导入高级查询工具 我使用的 SQL 客户端 到目前为止 我有 CREATE TABLE tb test id INTEGER name varchar 10 dob date city char 20 state
  • 使用 C# .NET 中的 XDocument 库删除内部节点,但不删除 xml 中的值

    我有以下 XML 文件 p span class screenitems Add span p 我要删除它 span 节点但是Add存在 所以最后看起来如下 p Add p 有没有好的 简单的方法来做到这一点 Use ReplaceWith
  • VS 2015许可证已过期

    我昨天 2015年7月21日 从我的MSDN帐户下载了VS 2015 enterprise 发布版 并将其安装在全新的W8 1 pro机器上 是的 遗憾的是 我无法将Win8 1 Pro升级到Enterprise https superus
  • “索引包失败”

    在克隆 git 存储库时 我收到一条我不太明白的错误消息 git clone email protected group07 Initialized empty Git repository in cygdrive C Users Mart
  • 拉取全局环境中具有特定属性的所有对象

    假设我有一个全局环境中的对象列表 我如何只提取那些具有特定属性集的内容 x1 lt 1 10 x2 lt 1 10 x3 lt 1 10 x4 lt 1 10 x5 lt 1 10 attr x1 foo lt bar attr x5 fo
  • 每次导入 Tensorflow 时都会发出警告 - “未找到 cudart64_101.dll”。有没有办法只消除这个警告?

    2021 01 26 17 13 35 314383 W tensorflow stream executor platform default dso loader cc 55 Could not load dynamic library
  • 使用迭代参数的 SSRS 创建报告

    我正在修改现有的报告 该报告设置为让您查看每个销售代表的统计信息 您可以通过更改参数来完成此操作sales rep在报告视图中 我需要修改报告 以便它可以为每个销售代表显示一个页面 然后 该数据将导出到 Excel 每个销售代表的统计数据将
  • 无法在 R 上加载 rJava

    我希望在 R x64 3 1 2 中加载 rJava 操作系统 Windows 8 1 64 位 虽然安装似乎工作正常 gt install packages rJava Installing package into C Users so
  • 使用 Rails 多态性进行嵌套注释

    我需要在 Rails 3 应用程序中构建一个嵌套评论系统 允许对许多模型 文章 帖子等 进行评论 并且正在讨论按照以下方式滚动我自己的解决方案这个帖子 有可用的宝石 例如acts as commentable with threading
  • 访问远程 bean 时 CORBA 内部出现异常

    在装有 Glassfish 4 0 和 JDK 1 7 55 的 Windows Server 上 我收到 NoClassDefFoundError 和 ClassNotFoundException 然后调用远程 bean 方法 Stand
  • Xpath:查找类包含空格的元素

    所以我有看起来像这样的元素 li class attribute li note the space li class attribute li 使用 xpath li class attribute 将获得第二个元素但不是第一个 如何获得
  • 数据表 - 数据表外部的搜索框

    我正在使用数据表 数据表网 并且我希望我的搜索框位于表格之外 例如在我的标题 div 中 这可能吗 您可以使用 DataTables api 来过滤表 因此 您所需要的只是您自己的输入字段 其中包含一个 keyup 事件 该事件会触发 Da
  • 使用 R 计算时间序列中的间隙大小

    假设我有一个包含时间序列的数据框 如下所示 Date value 2000 01 01 00 00 00 4 6 2000 01 01 01 00 00 N A 2000 01 01 02 00 00 5 3 2000 01 01 03 0
  • 本地部署和从应用商店部署时的不同应用行为

    从 Windows 应用商店 测试版 部署应用程序时 我遇到奇怪的问题 该应用程序被编写为 Windows Phone 8 1 RunTime 我有一个用 C C 编写的小型 Windows 运行时组件 用于检查文件是否存在 bool Fi