Win8探索学习笔记

  目录

  “程序”的“安装”

  基于JS的metro程序基础

  基于C++的metro程序基础

  WinRT(desktop)之Hello, World

  WinRT之语法扩展

  “程序”的“安装”

  传言win8改变了很多,恩,废话。我希望试图从开发人员关心的角度来了解一下win8,对于用户而言,其实我觉得win8改变真的不多,无非就是修改了一下开始界面,然后程序会使用metro风格的界面,对于开发人员来说,可能变化的比较多,多了很多新名词,我希望能对其有所了解,所以记录一下我所看到的,当然,由于win8其实只是一个预览版,很多东西我觉得还是会变的,所以真正的东西出来的时候或许还会有些不一样吧。

  首先关于变化,我想到的是“程序”是如何“安装”和“运行”的,之所以用这么多引号,是因为变化太多,我甚至不知道该不该用“安装”等来表达。有点乱,慢慢来吧,有新的发现就更新下面的内容。

  (1) win8程序的类型

  win8新增了metro,主要是希望便于平板等触摸设备上使用。从大的类别分,win8上的程序分为desktop和metro程序(暂且,我就这么分吧,因为据说win8会有多个版本,支持arm和x86处理器,并不是所有处理器都支持desktop和metro版本,PS:我所使用的是MS的64bit+VS11的preview 版本,安装在VBox中)。

  对于desktop程序,只能运行在“desktop”环境下,metro风格的程序,只能运行在“metro”环境下。desktop环境,就和我们的win7类似。至于“metro",在后面还会慢慢的研究。

  (2) desktop程序如何"安装"到"开始界面“中

  参考怎样在Windows8桌面上创建自定义快捷方式

  说明:这里说的程序是desktop的。

  简单来说,对于一个exe文件,通过创建其快捷方式(假设为hello.exe - shortcut),将快捷方式放到:

  C:/ProgramData/Microsoft/Windows/Start Menu/Programs

  中,或者在这里创建一个文件夹,放到文件夹中也是可以的。然后,到win8的start界面中,查找这个程序的名字hello.exe,就会出现了,用右键选中这个程序,就可以将其pin到start界面中。

  问题一:一个程序pin到start界面,这些pin的信息保存在哪里的?

  只要在C:/ProgramData/Microsoft/Windows/Start Menu/Programs,那么在start界面搜索都是可以出现的,那么这个比较容易理解了,搜索会自动去这个目录下遍历。那么哪些程序被pin了,这些信息保存在哪?相信肯定是某个注册表项的吧,具体就不去找了。

  问题二:所有能在start界面搜索到的程序(的快捷方式)都是在上面这个目录下保存的吗?

  事实上,C:/Users/<username>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs目录下也是可以保存的。至于还有没有其它目录也可以被start界面搜索到,那就不清楚了。

  总结:传统的desktop程序在win8下都是没有问题的,win32的API那些东西都还是支持的,什么MFC都是可以用的,弄个快捷方式到metro风格的start界面上也是可以的,只是运行还是会自动切换到desktop模式下。下面的内容开始探索metro程序到底是怎么”运行“的。到底是二进制本地运行还是在.NET虚拟机上运行,还是在一个所谓的native实际上还是“虚拟机”的解释环境下执行,慢慢来吧。

  基于JS的metro程序基础

  (1) Metro程序支持的开发方式和语言

  对于Metro风格应用开发,可以使用JS实现程序逻辑,结合HTML5/CSS3设计用户接口;也可以使用C++, C#或VB结合XAML来实现用户接口,使用Native C++或托管C#或VB来实现应用程序逻辑。对于Metro风格的C++游戏,可以使用Native C++的DX11库和HLSL等。

  对于Win8,本地扩展允许用户构建可重用的组件库,可以使用C++、C#或VB构建组件,然后使用JS或者其它的支持的语言在程序中调用这些组件

  (2) 下面是Win8提供的VS11预览版对Metro支持的工程选项

  (3) 使用JS实现的hello, metro

  实现hello, metro很简单了,用VS 11新建一个最简单的JavaScript工程,默认的工程模板如下:

  简单分析一下,这里有css文件夹、images文件夹、js文件夹、winjs文件夹和default.html和一个manifest文件。其实,和一般的web程序是一样的,default.html是“起始页”,css和images和js文件夹是对应的一些引用的文件了。winjs文件夹,重点说明一下,是win8为基于JS的metro程序创建的一个JS库吧,暂且理解这么多。然后package.appxmanifest,对于开发人员都很熟悉了,打包用的一个列表文件,在VS中,双击打开可以使用UI的方式编辑了。打开default.html,里面其实就是对其它的css/js文件的一些引用了,就是提供了一个简单的模板工程了。

  到了这里,我已经大概猜测到了,基于JS的metro程序最后还是打包一下,放到一个“虚拟机"/"runtime"上去跑而已,原本以为MS会把JS编译到二进制,成为native程序的,下面会进一步证明这一点。

  简化上面的工程,删除css、js、和winjs文件夹,最后只剩下images、default.html、package.appxmanifest的内容。事实上,这才是一个”最简单“的基于JS的metro工程。default.html内容如下:

<!DOCTYPE html>  
<html>
<head>
<title>Hello,metro </title>
</head>
<body>
<button>
Hello, Metro with JS!
</button>
<p>
This is an metro app implemented by JS!
</p>
</body>
</html>

NET技术Win8探索学习笔记,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。