如何在Windows应用商店应用中外部化属性

时间:2015-05-01 14:00:12

标签: javascript .net windows-store-apps

我正在使用将直接部署到我们企业中的设备的Windows应用商店应用(JavaScript / HTML / CSS)。

我希望将数据源(对于Restful Web API的URL)保留为配置的一部分,而不是内置到应用程序本身,以便我可以在部署期间设置它们(例如,设置测试URL和产品URL)。

更一般地说,我想将文本变量存储在应用程序外部的配置中,并且可以通过应用程序以某种方式提取。

我以为我可以设置一些环境变量或其他东西,但Windows Store应用程序似乎无法读取它们。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您当然可以在启动时从应用程序发出HTTP请求以检索配置文件,但这当然会假设您的方案中可能会或可能不会起作用的连接。对于Store获得的应用程序,这是唯一的选择。

但是,在您的场景中,您将通过Powershell进行侧载,对吗? (这意味着直接安装到设备上。)在这种情况下,Powershell脚本以完全信任的方式运行,并且在此过程中可以访问文件系统。这意味着脚本可以轻松地将配置文件部署到应用程序的本地appdata文件夹中,然后应用程序在运行时将其选中。应用程序包还应包含一个默认配置文件,如果此类文件在启动时不存在,则该文件将复制到该appdata文件夹中。

执行安装的add-appxpackage脚本的文档位于:https://technet.microsoft.com/en-us/library/hh856048.aspx

您可以使用的另一个选项是为测试和生产部署构建不同版本的软件包。可以在Visual Studio中配置构建过程,以根据构建目标(例如,调试或发布)有选择地引入不同版本的文件。我有一个博客在http://www.kraigbrockschmidt.com/2014/02/25/differentiate-debug-release-builds-javascript/上描述了这种技术。这将允许您将不同版本的配置文件打包到包中,然后您可以在运行时从包安装位置读取该包,或者如果您想在运行时进行更改,则将其复制到appdata。

我提到了这种方法来构建不同的包,因为除了更改构建目标之外,它不需要你做任何事情。它完成了使用其他语言的#ifdef预编译器指令所做的事情,而这些指令并不适用于JavaScript。