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

罗马斯

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

我有一个用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);

结果:

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

本地部署

店铺部署

问题:

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

有谁知道为什么Windows运行时组件无法访问MusicLibrary中的文件?Windows运行时组件是否需要一些其他功能?
有什么办法可以使其工作?

罗布·卡普兰(Rob Caplan)-MSFT

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

PaClient错误部署应用程序商店

来自分类Dev

我的 node + express 应用程序在本地部署良好,但在推送到 heroku 时不会部署

来自分类Dev

自动将应用程序部署到亚马逊商店

来自分类Dev

将 Ionic 应用程序部署到 Google 商店

来自分类Dev

通过Java应用程序和Chrome的POSTMAN扩展发送POST请求时的行为不同。如何调试并查找错误?

来自分类Dev

在多设备混合应用程序中访问本地商店

来自分类Dev

覆盖部署为 Tomcat 中的 WAR 的 spring-boot 应用程序的属性时的奇怪行为

来自分类Dev

Rails应用程序在本地运行,但在部署到Heroku时无法运行

来自分类Dev

nodejs应用程序在本地运行,但在部署时无法运行

来自分类Dev

Rails应用程序在本地运行,但在部署到Heroku时无法运行

来自分类Dev

nodejs应用程序在本地运行,但在部署时无法运行

来自分类Dev

不同机器和操作系统上的应用程序行为不同

来自分类Dev

Windows应用商店被组策略阻止时,侧面加载Windows应用商店应用程序

来自分类Dev

Rails部署:数据库和应用程序不同步

来自分类Dev

应用程序在不同计算机上的行为不同

来自分类Dev

应用程序和Access查询向导之间的LIKE行为不同

来自分类Dev

如何在本地部署OpenShift Java EE应用程序?

来自分类Dev

在本地部署Swift OS X应用程序?

来自分类Dev

如何部署使用本地数据的闪亮应用程序

来自分类Dev

使用本地数据集部署闪亮的应用程序

来自分类Dev

本地应用程序与部署到Heroku之间的差异

来自分类Dev

Arquillian部署应用程序,但测试仅在本地运行

来自分类Dev

已部署的 Clojure 应用程序中的本地配置

来自分类Dev

R Shiny应用程序的本地版本和Shinyapps.io版本之间的颜色不同

来自分类Dev

Boto3使用Django应用程序在本地和弹性beantalk上生成不同的链接

来自分类Dev

如何在Windows应用商店应用中本地化通知和组合框?(C#/ XAML,多语言应用程序工具包)

来自分类Dev

React Native android 应用程序在应用程序商店上传时引发网络错误

来自分类Dev

如何使通过Puma和Capistrano部署的Rails应用程序在重新启动时启动

Related 相关文章

  1. 1

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

  2. 2

    PaClient错误部署应用程序商店

  3. 3

    我的 node + express 应用程序在本地部署良好,但在推送到 heroku 时不会部署

  4. 4

    自动将应用程序部署到亚马逊商店

  5. 5

    将 Ionic 应用程序部署到 Google 商店

  6. 6

    通过Java应用程序和Chrome的POSTMAN扩展发送POST请求时的行为不同。如何调试并查找错误?

  7. 7

    在多设备混合应用程序中访问本地商店

  8. 8

    覆盖部署为 Tomcat 中的 WAR 的 spring-boot 应用程序的属性时的奇怪行为

  9. 9

    Rails应用程序在本地运行,但在部署到Heroku时无法运行

  10. 10

    nodejs应用程序在本地运行,但在部署时无法运行

  11. 11

    Rails应用程序在本地运行,但在部署到Heroku时无法运行

  12. 12

    nodejs应用程序在本地运行,但在部署时无法运行

  13. 13

    不同机器和操作系统上的应用程序行为不同

  14. 14

    Windows应用商店被组策略阻止时,侧面加载Windows应用商店应用程序

  15. 15

    Rails部署:数据库和应用程序不同步

  16. 16

    应用程序在不同计算机上的行为不同

  17. 17

    应用程序和Access查询向导之间的LIKE行为不同

  18. 18

    如何在本地部署OpenShift Java EE应用程序?

  19. 19

    在本地部署Swift OS X应用程序?

  20. 20

    如何部署使用本地数据的闪亮应用程序

  21. 21

    使用本地数据集部署闪亮的应用程序

  22. 22

    本地应用程序与部署到Heroku之间的差异

  23. 23

    Arquillian部署应用程序,但测试仅在本地运行

  24. 24

    已部署的 Clojure 应用程序中的本地配置

  25. 25

    R Shiny应用程序的本地版本和Shinyapps.io版本之间的颜色不同

  26. 26

    Boto3使用Django应用程序在本地和弹性beantalk上生成不同的链接

  27. 27

    如何在Windows应用商店应用中本地化通知和组合框?(C#/ XAML,多语言应用程序工具包)

  28. 28

    React Native android 应用程序在应用程序商店上传时引发网络错误

  29. 29

    如何使通过Puma和Capistrano部署的Rails应用程序在重新启动时启动

热门标签

归档