我已经在网上阅读了几天,我无法找到解决方案,我可以开始工作。
我想要一个单独的exe文件在运行可以共享并发送给人的文件时解压缩到临时位置。理想情况下,我想隐藏我的JavaScript文件。
我只需要一个可以轻松发送的文件。
-Fasani
答案 0 :(得分:0)
我不知道有什么简单的方法可以做到这一点
但我前一段时间遇到了类似的问题,我创建了一个VB.Net程序来为我做这个
首先在此处下载便携式32位版本的节点:Node.exe
如果安装了visual studio,则创建一个新项目,然后从解决方案资源管理器转到项目属性,并将node.exe和.js文件添加为资源。
然后在formload中(如果你不希望你的程序有一个ui)或在按钮点击事件中放置这些代码:
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中创建一个名为NodeTmp的文件夹,并从该文件夹中提取node.exe(来自名为“node”的文件resorce)然后提取jsfile.js(从同一文件夹中名为“jsfile”的文件资源中创建一个.bat文件并运行它
删除.js文件后运行它(在不到1秒的时间内创建并删除它,因此它对用户来说是隐藏的): 创建一个名为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的行
-----不是答案的一部分,但是如果你想拥有一个用户界面并在那里放一个关闭按钮,那么用户不必从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