使一个AppJS项目成为一个单一的exe文件

我已经在网上阅读了几天,我无法find一个解决scheme,我可以工作。

我想要一个单一的exe文件,当你运行可以共享和发送给人的文件,解压到临时位置。 理想情况下,我想隐藏我的JavaScript文件。

我只需要一个可以轻松发送的文件。

-Fasani

我不知道有任何简单的方法来做到这一点

但前一段时间我有类似的问题,我创build了一个VB.Net程序来为我做这个

首先下载便携式32位版本的节点: Node.exe

如果您安装了Visual Studio,请创build一个新项目,然后从解决scheme资源pipe理器转到您的项目属性,并将node.exe和.js文件添加为Resources。

然后在formload(如果你不想让你的程序有一个UI)或button点击事件这些代码:

Try Dim tmpp = System.IO.Path.GetTempPath & "NodeTmp" If (Not System.IO.Directory.Exists(tmpp)) Then System.IO.Directory.CreateDirectory(tmpp) If Not System.IO.File.Exists(tmpp & "\tmp_node.exe") Then _ My.Computer.FileSystem.WriteAllBytes(tmpp & "\node.exe", My.Resources.node, False) System.IO.File.WriteAllText(tmpp & "\jsfile.js", My.Resources.jsfile) System.IO.File.WriteAllText(tmpp & "\batfile.bat", """" & tmpp & "\tmp_node.exe"" """ & tmpp & "\jsfile.js""") Dim p As New Process() p.StartInfo.FileName = "cmd.exe" p.StartInfo.Arguments = "/C """ & tmpp & "\pz.bat""" p.StartInfo.CreateNoWindow = True p.StartInfo.UseShellExecute = False p.Start() 'Timer1.start() Catch ex As Exception MsgBox("Error") End Try 

上面的代码会在C:\ user {name} \ appdata \ local \ Temp中创build一个名为NodeTmp的文件夹,并从该文件夹中提取node.exe(从文件resorce中调用“node”),然后从文件中提取jsfile.js资源名为“jsfile”)在相同的文件夹中,然后创build一个.bat文件并运行它

在运行后删除.js文件(创build并删除的时间less于1秒,因此对用户来说是隐藏的):创build一个名为Timer1的定时器,并将其间隔设置为150ms,取消注释行Timer1.start( )从上面的代码,并把下面的子代码的地方

 Sub pz_cleanup() Handles Timer1.tick Try Dim tmpp = System.IO.Path.GetTempPath & "PZT" System.IO.File.Delete(tmpp & "\pz.bat") System.IO.File.Delete(tmpp & "\pz.js") Timer1.stop() Catch ex As Exception End Try End Sub 

这绝对不是最好的办法,但它对我来说是唯一的缺点,它迄今为止唯一的缺点是它需要安装在其他用户计算机上的.net框架,而不是所有的用户都拥有它

如果你想要打开cmd并显示节点输出注释,那么将CreateNoWindow设置为true的行

—–不是答案的一部分,但是如果你想有一个UI,并在那里放一个closuresbutton,所以用户不必从taskmanager结束任务节点使用这个代码:

 Try Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("tmp_node") For Each p As Process In pProcess p.Kill() p.WaitForExit() Next Catch ex As Exception MsgBox("Error") Return True End Try 

希望这会有所帮助,如果你更熟悉VB.Net,也可以用其他语言做类似的事情

Interesting Posts