copy /b nw.exe+app.nw app.exe打包后可以解压吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了copy /b nw.exe+app.nw app.exe打包后可以解压吗相关的知识,希望对你有一定的参考价值。

node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦。很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的。下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境)首先新建一个index.html文件,作为我们这个demo的入口页面,我们暂且就把这个页面当成一个完整的web应用吧。内容随便写点什么,比如:然后创建配置文件package.json,内容如下:其中的main属性就是用来指定入口文件的,这个属性的值可以是本地文件,也可以是远程网址,这样就相当于可以把一个远程的web应用直接变为一个桌面应用了。除了name与main这两个属性外,还有很多其他有用的属性可以配置,比如指定应用的图标,显不显示浏览器的工具栏,指定浏览器的初始大小等等,具体的配置参数文档可看这里https://github.com/rogerwang/node-webkit/wiki/Manifest-format现在我们有了两个文件了。然后将index.html和package.json这两个文件压缩到一个zip压缩包里,命名为app.zip现在app.zip这个压缩包里的内容应该是这样的:然后把app.zip这个文件的扩展名改为nw,变为app.nw然后下载一个windows版本的node-webkit,解压后得到一个文件夹:之后我们之前得到的app.nw这个文件就可以用nw.exe来执行了,直接把app.nw拖到nw.exe上就可以了。运行结果如下:跟在chrome中打开index.html这个页面的效果差不多,当然你可以通过配置package.json这个文件,来隐藏浏览器的工具栏或边框,来使它更像是一个桌面软件。因为nw文件的运行需要node-webkit环境的支持,所以我们还需要把app.nw这个文件跟node-webkit的环境文件一起打包成一个可执行文件。首先打开windows的cmd,然后输入如下命令:copy/bnw.exe+app.nwapp.exe注意文件路径要根据你的实际情况进行变动,这里假设app.nw放在了node-webkit的主文件夹里,然后输出的app.exe也会在这个文件夹里。执行命令后我们得到了app.exe这个可执行文件。到了这步,我们已经得到了app.exe这个文件,但如果只有app.exe这个文件还是不够的,这个可执行文件的运行还需要几个dll文件的支持。其中nw.pak与icudt.dll这个两个文件是必须要的。ffmpegsumo.dll文件是媒体支持文件,如果你的html页面中用到了或或其它与媒体相关的东西,则必须带上这个文件。libEGL.dll和libGLESv2.dll这个两个文件则是使用webGL或GPU必须要的最后我们得到的就是这样一个文件夹:执行app.exe就可以运行我们的demo了。但我们大多数人想的是给用户一个exe文件,用户就可以使用了,不用再附带一些其他文件。嗯,所以我们还可以把app.exe跟其他的文件再打包一次,把上图中的所有文件变成一个可执行文件,用户只要得到这个文件,就能运行我们的应用了。做这步我们需要一个软件叫EnigmaVirtualBox,首先下载和安装这个软件,然后打开它。然后在EnterInputFileName那里输入我们的app.exe的路径,在EnterOutputFileName那里填写我们要把打包出来的可执行文件输出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的话默认就可以了。最后点击右下角的Process按钮,就大功告成了。最后我们得到了一个app_boxed.exe的文件,只要把这个文件交给用户,用户就可以运行了。node-webkit虽然方便,但有个很大的缺点是得到的可执行文件有点大,大家在可以在衡量利弊后决定使不使用。 参考技术A 可以,把文件后缀名改成zip即可解压。

python中的copy.copy和copy.deepcopy

一个例子就搞清楚

import copy  
a = [1, 2, 3, 4, [‘a‘, ‘b‘]] #原始对象  
b = a #赋值,传对象的引用  
c = copy.copy(a) #对象拷贝,浅拷贝  
d = copy.deepcopy(a) #对象拷贝,深拷贝  
  
a.append(5) #修改对象a  
a[4].append(‘c‘) #修改对象a中的[‘a‘, ‘b‘]数组对象  
  
print ‘a = ‘, a  
print ‘b = ‘, b  
print ‘c = ‘, c  
print ‘d = ‘, d  

输出结果: 
a = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5] 
b = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5] 
c = [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘]] 
d = [1, 2, 3, 4, [‘a‘, ‘b‘]]

也可以这么理解,浅拷贝只引用了一级对象
深拷贝很容易理解,可以理解为完全独立的两个东西了

以上是关于copy /b nw.exe+app.nw app.exe打包后可以解压吗的主要内容,如果未能解决你的问题,请参考以下文章

nwjs-打包

nw.js打包html成EXE,无法把文件夹打包进去。只能打包一个html,网上都没有教程教怎么打包文件夹的。

nw.exe开发DEMO下载

nwjs如何打包文件为exe文件并修改exe图标

nw.js使用

想将几个TS文件合并成一个文件,使用命令COPY /B C:\1\*.TS C:\1\NEW.TS 合并之后,new.ts文件的大小等于