2012-11-29 74 views
4

如何在基於Windows 8的應用程序中通過JavaScript代碼獲取應用程序名稱?如何通過代碼獲取應用程序名稱?

編輯:作爲更精確:我想在package.appxmanifest字符串 - >應用程序的用戶界面 - >顯示名稱

+0

的可能重複:http://stackoverflow.com/questions/3677338/how-to-get-the-application-path-using-javascript – RonaldBarzell

+0

這不是正是我想要的...看到編輯版本 – Alesqui

回答

4

Marco的回答很有幫助,但是由於XML命名空間要求不足,轉換爲Javascript證明有點困難。與XDocument一樣,LINQ-to-XML在WinJS中不可用,但在Marco引用的C#資源中使用。

下面是我如何得到應用程序名稱。請注意,它是異步的; AFAIK沒有獲取應用程序名稱的同步方式。

var appname; 

(function() { 
    Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("AppxManifest.xml").then(function(file) { 
     Windows.Storage.FileIO.readTextAsync(file).done(function (text) { 
      var xdoc = new Windows.Data.Xml.Dom.XmlDocument(); 
      xdoc.loadXml(text); 
      appname = xdoc.selectNodesNS("m:Package/m:Applications/m:Application/m:VisualElements", 
       "xmlns:m=\"http://schemas.microsoft.com/appx/2010/manifest\"")[0] 
       .attributes.getNamedItem("DisplayName").nodeValue; 
     }); 
    }); 
})(); 
+0

這真棒!我能夠編輯這個來獲得應用程序功能。有些可笑的是,沒有內置WinJS API來獲取這類信息。使得難以製作需要特定功能的可再發行控件,而沒有好的辦法告訴消費開發者主機應用程序配置不正確。 –

+0

也可以在DisplayName屬性下找到Displayname。仍然是複雜的方式,但稍微短一點的選擇器(沒有讓你的工作使用VS Express 2013 for Windows)代碼:xdoc.selectNodesNS(「m:Package/m:Properties/m:DisplayName」,「xmlns:m = \ 「http://schemas.microsoft.com/appx/2010/manifest\"")[0].innerText; – Stefan

1

你可以看看到包括在木衛四控制Toolikit的AppManifestHelper類。 GetManifestVisualElementsAsync方法返回一個VisualElement對象與屬性顯示名稱,這就是您正在尋找。

請注意,此代碼使用C#,因此您需要將其轉換爲Javascript。

2

根據this reference,無法獲取顯示名稱。你可以從Package.Id得到包名,但它聽起來像你想要的顯示名稱。

5
var package = Windows.ApplicationModel.Package.current; 
var displayName = package.displayName; 

新增8.1

+0

似乎無法通過資源使用本地化的顯示名稱。 – Mo0gles

相關問題