关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10 C盘读写文件没权限等问题的解决方法

314次阅读
没有评论

问题背景

作为一只只懂web的php猿,突然有一天老板和你说:“我们最近需要开发一个桌面软件,它的功能很简单,我相信你能搞定它。”是熬夜去啃c++呢还是和老板说我搞不了这个,我想辞职。当然,作为一个由前端刚刚转入后端我还有第三条路,用nw试试呗。当时是有3个方案的:

1、php的winbinder 度之发现官网都打不开了 ,下一个;

2、php的php-gtk,度之谷之发现案例甚少,对于我这个新手来说太不友好;

3、nodejs的nw,发现官网案例不少,另外听说阿里的钉钉桌面端也是它做的 [ 后来发现腾讯的微信开发者工具也是nw写到,现在已经换成了electron ],那毫不犹豫就是nw了啊…

第一步通信,当时嵌入式大哥说先用串口,以后加无线。好吧,我先看看串口怎么调,度了一下发现nw要库有库(虽然有坑)要原生调用有原生(chrome内核的chrome对象,文档在chrome开发者中心,我天朝当然要开个蓝灯才能看啦。同时发现调usb、调wifi……应有尽有,瞬间觉得用nw那就是一个 美滋滋!……

好了废话不多说,说说遇到的一些问题,也许这对于你来说就不是个问题(篇幅略长,急于解决问题的只看粗体字就OK)

1、项目打包

(什么,跳的太快?还没开始就是打包了?嗯 咳…,这个问题网上大把的了,要简单有helloword.exe,要复杂点的有notepad.exe,自己去看吧…)

打包其实网上也有很多,但是坑也有很多,比如那些把项目压缩为app.zip重命名为app.nw然后copy /b nw.exe+app.nw app.exe(这步其实应该叫文件合并),步骤清晰明了,简单易用,可是双击合并后的app.exe是一直报错:

关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10

下面说说打包(可以跳过文件合并,直接打包):

1)、用Enigma Virtual Box 软件打包  

官网:Software Protection, Software Licensing, Software Virtualization

它能把你的项目打包为一个.exe单文件,无需安装双击即可运行。注意看清名字不要下错了,是左3免费的用于打包的这个,要是你下了别的因为你不是付费用户,你打包完了会发现双击你的.exe后出现了 一个永远置顶并且不能关闭的小弹窗(感觉这真不像是一个商业软件应该做的) 。

使用方法:

也很简单,先把你的项目根目录(就是有package.json的文件夹)里的所有文件拷贝到nw解压后的根目录(就是有nw.exe 的这个文件夹),其实这个时候你双击nw.exe (可以重命名) 已经能运行你的项目了。然后打开安装好的Enigma Virtual Box后第一行选择打包后输出的目录; 第二行选择程序的主文件为nw.exe;接着点击添加文件(递归),选择刚刚你拷贝后包含有你的项目文件和nw.exe等等那一堆文件的父文件夹,然后点击打包软件的封包,等待完成就ok了…

但是这种方式也有一个坑:由于是单文件,使用时是虚拟解压,启动的时间略慢不说,当你的项目里涉及到文件创建时就会报错,找不到文件或目录,尚无解决方案,有套路的欢迎评论留言交流

2)、用 inno setup软件打包 

个人觉得较为完美(由我的Java同事介绍),网上一搜有很多,就不放链接了

这个软件可能有很多同学都知道,但它用来打包nw项目可能是个新路子。用它打包的软件会和你常见的软件一样,有一个安装包,安装后默认会在c盘的C:\Program Files (x86)目录(可以在后面的参数里设置)下生成一个你软件的安装目录,可以给安装包设置安装密码等……

缺点:项目源码会原样暴露在安装目录,所以需要诸君自己对核心文件做压缩、混淆(时常出错)等,JavaScript好像不能加密,能吗?

使用方法:

打开你的inno setup 文件 – 新建 – 接下来填写你软件相关的公司名、官网、版本、证书等(可不填,一直下一步就行)…,停! 和上面一样该选择主文件了!然后点击添加目录(如下图),选择刚刚你拷贝后包含有你的项目文件和nw.exe等等那一堆文件的父文件夹,然后下一步关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10

选择输出文件夹等等诸多项后点继续,然后打包软件会提示你是否保存当前打包项目的配置信息等,你随意(主要是上图这步,其他的你随意)。然后点上图的那个绿色的向右的按钮等待运行完成就ok了,打包好的exe安装包文件会生成在你刚刚选的输出目录!

2、win10上写入文件没权限的问题

本来以为软件都打包好了,该没问题了吧,可以缓缓开始下个项目了吧,结果软件到了测试那说XXX功能点击没反应…,查看报错不能操作XXX文件。我那个XX,打个包还把软件打坏了?那是不可能的,推测为权限问题,后发现软件安装到非C盘或者以管理员身份运行没有这个报错,让用户每次以管理员身份运行?(开玩笑,好多用户都只知道鼠标右键是复制粘贴和删除好吗?)于是就往文件读写权限方面找解决方案,网上几乎都在说更改项目里内容如下的一个xml清单文件里的几个字段,请求权限,那就试试呗。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="Intel.Software.node-webkit" type="win32">
</assemblyIdentity>
<description>node-webkit</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"></supportedOS><supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS></application></compatibility></assembly>

从上面的配置中找到security节,改为:

<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>

参考:修改nw.js的exe文件使其请求管理员权限 – 玄魂 – 博客园 https://www.cnblogs.com/xuanhun/p/5142061.html

前辈们很贴心,有的说在vs工程里改,有的甚至连需要用到的PE文件修改器都给推荐了(虽然又有坑,后面说)。只是,作为一个安装包,清单文件叫啥名,在哪?把包拖回vs里能不能打开就是问题,更别说找文件里,那就PE呗。

把包拖到前辈们推荐的resedit(不要用这个) PE修改器上果然能看到几个文件,最后瞎点找到了那个相似度极高的xml文件,忽略了文件开头的??xml(尽管知道可能打开时乱码了)欢天喜地的改完前辈们说的那几个字段保存,再双击安装包。纳尼?安装包损坏了,换了几个修改器还是损坏了安装包。忽然想到前些天用来修改安装包图标的Resource_Hacker (v5.1.6用Resource_Hacker修改上述内容,编译(没错要编译)- 保存,重新安装项目安装包,问题解决。

关于用nw(node-webkit)开发windows桌面软件遇到的问题,包括nw项目打包、win10

facingscreen
版权声明:本站原创文章,由 facingscreen2023-02-09发表,共计3843字。
转载说明:本文为搜栈网原创文章,除特殊说明外皆由CC-4.0协议发布,转载请注明出处,如有帮助欢迎打赏。
评论(没有评论)
验证码