我们可以通过Windows 8新增的应用商店在本机安装各种应用,不过Windows 8应用的安装是有限制的,只能在应用商店下载在线安装。有没有办法,可以像传统的Windows软件一样,从任意地方下载获取,然后在本机离线安装?
【解题思路】
这个挑战有点高难度。
在Windows 8应用商店中下载、安装应用虽然方便,但有时也很麻烦,比如许多人遇到过应用商店进不去的问题,或者下载速度慢,并且下载时也不能切换到别的应用(因为一旦应用商店处在后台,下载就会被挂起)。因此我们可以自己封装应用,然后离线安装。这样既方便在其他电脑上安装,也便于和好友共享APP。离线应用需要Windows 8受信任的证书才能安装,这需要借助一些工具来突破证书的限制。
【解题方法】
安装许可证突破限制
由于离线应用需要Windows 8受信任的证书才能安装,因此我们首先要在本机安装证书。对于新手来说,通过安装Windows 8开发人员许可证即可获得证书。
首先从http://www.dwz.cn/cfan201312下载Win8 Metro Developer(注意:程序运行需要NET Framework 3.5的支持,运行会自动提示下载安装然后重启)。启动程序后点击“注册开发人员许可证”,按提示输入自己的微软账号申请即可。
因为许可证包含受Windows 8信任的根证书,完成许可证的安装后,就相当于APP开发者了,所以有权限在本机安装APPX应用,以后就可以直接安装离线应用了。
自己封装离线APP
Windows 8开发人员许可证目前是免费的,但是它的证书只有3个月的有效期,而且很快就会进入收费阶段。因此对于系统高手,我们可以手动解除Windows 8应用在线安装限制。所需工具到http://dwz/cfan2019下载,下载后将其全部解压到H盘备用。
Windows 8应用默认全部安装在C:\Program Files\windowsapps,当前用户默认无法直接访问,我们需要先将文件夹查看方式设置为“显示所有文件”和“受系统保护文件”,然后右击该目录选择“属性→安全→高级→更改所有者”,将当前目录所有者设置为当前用户。接着返回属性设置窗口,单击“添加”,将当前用户添加到组和用户列表,并将其权限设置为“完全控制”,这样即可打开上述目录。
完成上述操作后,在资源管理器中打开C:\Program Files\windowsapps,其中的每个目录就对应一个已安装的应用。
现在我们就可以将这里安装的应用提取出来重新封装为离线APP。比如上班的时候,我们可以利用公司高速网络在应用商店下载安装应用,然后用下面的方法重新封装,这样就可以拿回家里电脑安装或与朋友共享了。
这里以从应用商店下载游戏为例,首先在公司电脑上通过应用商店安装好游戏。打开C:\Program Files\windowsapps目录,提取其中游戏目录到H盘并将其命名为youxi,接着打开H:\youxi,删除该文件夹中的microsoft.system.package.metadata目录,这个是系统自带验证文件。
接着返回桌面,按Win+X,选择“命令提示(管理员)”,以管理员身份启动命令提示符后,输入下列的命令重新封装该游戏:
H:\MakeAppx.exe pack /d h:\youxi /p my.appx
完成应用的封装后,在h:\youyxi下就会增加一个名为my.appx的应用包,这就是我们制作好的离线安装包,接下来我们就要对这个包进行签名。
离线应用的安装
因为Windows 8在开始菜单的Modern环境中每个App都必须由受信任的证书签名,这样Windows 8才允许将其安装到电脑上。因此需要先安装证书,双击下载到的证书进行安装,然后在打开的向导选择“本地计算机”。
剩下的操作按照屏幕提示依次点击“下一步→是→确认导入证书为H:\证书.pfx→下一步→输入私钥的密码(默认为pcbeta)→下一步→将所有证书放在下列存储→浏览→选择“受信任的根证书颁发机构”,最后点击完成证书的安装。
完成证书的安装后,打开IE,点击“工具→internet选项→内容→证书→受信任的根证书颁发机构”,确保其中安装了hadesy证书。
选中hadesy证书点击“导出→下一步→是,导出私钥→下一步→设置私钥的密码→下一步→设置私钥的名称保存位置如my.pfx→完成”,将导出私钥保存在H盘备用。
最后我们就可以使用signtool对离线应用进行签名了,同上继续在命令提示符下输入下列的命令进行签名(******为上面设置的私钥密码)。
signtool sign /a /v /fd SHA256 /p ****** /f h:\my.PFX h:\my.appx
不过注意的是.appx文件并非可执行文件,我们无法双击进行安装。以管理身份启动powershell,然后输入下列的命令即可进行安装:
add-appxpacke h:\my.appx