我正在寻找一种方法让托管网站解析出[appname] .manifest文件,以提取应用程序名称,版本和图标(如果可用)。通过这种方式,我可以将它放入一个易于部署的控件中。有没有任何框架调用可以帮助我解析清单文件?有没有办法解析应用程序清单?
我要找的文件是[APPNAME]。应用和/或[APPNAME] .manifest的
我正在寻找一种方法让托管网站解析出[appname] .manifest文件,以提取应用程序名称,版本和图标(如果可用)。通过这种方式,我可以将它放入一个易于部署的控件中。有没有任何框架调用可以帮助我解析清单文件?有没有办法解析应用程序清单?
我要找的文件是[APPNAME]。应用和/或[APPNAME] .manifest的
你可以得到最要使用System.Deployment.Application.InPlaceHostingManager
类信息的 - 不要被名字所迷惑,它主要是用于浏览器承载的ClickOnce应用程序,但也适用于独立的ClickOnce应用程序。一旦你初始化一个实例,并把它传递的URL。应用文件,你可以调用GetManifestAsync()
- 在事件处理程序为GetManifestCompleted
,您可以获取应用程序名称和版本:
void iphm_GetManifestCompleted(object sender, GetManifestCompletedEventArgs e) {
Console.WriteLine("Application name: {0}", e.ApplicationIdentity);
Console.WriteLine("Application version: {0}", e.Version);
}
的图标通常引用应用程序清单(.application是部署清单) - 可以使用访问应用程序清单;在上面的例子中,你会得到e.ApplicationManifest
的值,这会给你一个XmlReader
玩。
可能最好研究相关的XML模式,然后使用XQuery查找图标。
System.Diagnostics.FileVersionInfo会做最繁重的工作适合你。它会从文件中提取元数据以确定程序集的产品名称&版本。至于该图标,这是一个不同的故事,但至少这是给你一个开始:
更新:
而且使用System.Reflection.Assembly你可以打电话GetManifestResourceInfo(string)
,GetManifestResourceNames()
和GetManifestResourceStream(string)
访问组件的资源(为图标)。
谢谢你;然而,我正在寻找将解析* .application和/或* .manifest xml文件的解析。在clickonce应用程序中,xml应用程序和清单文件现在与二进制编码的文件相同。 – AdamSane 2010-08-24 00:13:25
这给了我最需要的东西。谢谢。 – AdamSane 2010-11-30 15:10:16