将HTML+JS转换为可执行文件

14

我有一个带有嵌入式JavaScript的HTML文件,想要将其转换为独立的exe文件。

这是否可能?我该如何做?是否有html2exe工具可用?

顺便说一句,如果你必须问为什么,它是一个非常简单的文本处理实用程序,但某些人希望它(出于我无法理解的原因)作为桌面应用程序。

8个回答

7
尝试使用由Chromium JS引擎和Node.js驱动的开源应用程序Node-webkit(从此处https://github.com/rogerwang/node-webkit)制作独立的.exe文件。请查看页面中提供的文档。https://github.com/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps 阅读Node.js文档http://nodejs.org/api/,了解其强大的API! Node-webkit提供了额外的API,以使应用程序菜单栏、使用系统托盘图标并发布通知等功能更加本地化!幸运的是,Node-webkit跨平台,因此您可以轻松将应用程序移植到Linux和Mac OS X!
我强烈建议您使用Node-webkit在HTML5 CSS3和JavaScript中制作功能强大的桌面应用程序。祝你一切顺利! :)
以下是一些例子:StormCloud、NitroTasks等... https://github.com/rogerwang/node-webkit/wiki/List-of-apps-and-companies-using-node-webkit

5

他们不会生成exe文件,但你可能会对研究Adobe AIR以及其开源竞争对手Titanium感兴趣。


4
如果您的桌面只限于Windows,您是否考虑将其创建为HTML应用程序?这样您就可以在无需创建EXE的情况下从桌面启动。

3
如果您只想将单个HTML网页运行为应用程序/可执行文件,请尝试以下方法:
1) 将.html页面重命名为.hta
2) 将下列代码片段添加到您的html页面标签中。
<HEAD>
<HTA:Application
 Border = Thick
 BorderStyle = Complex
 ShowInTaskBar = No
 MaximizeButton = No
 MinimizeButton = No
>
</HEAD>

2

根据页面的复杂程度而定。

如果只有一个页面,那么 .hta 对您是否可行?

如果有多个页面,您可以使用 IE Webbrowser 控件(或 geckofx )和 HTTPListener

或者您可以自己 托管 asp.net 运行时

过去我成功地使用 Webbrowser 并通过手动注入 HTML(包括所有所需的脚本),但我不推荐这样做。这是一个令人咬牙切齿的调试噩梦。我一直在坚持,因为它很“有趣”:-)


1

Scriptonit

这是我为此特别开发的产品:js+html+css --> Windows EXE

它不仅可以处理文本,还可以让您创建真正的产品。唯一的缺点是在幕后使用了Edge,它是基于WebBrowser组件构建的。但是只需一行元标记,Edge就可以像适当的HTML5浏览器和CSS3一样运行。魔法行在下面的示例中包含(实际上是第一行)。

示例:文本文件查看器

注意:这就是所需的全部内容。将其放入名为start.html的文件中,您的应用程序即可工作。它将显示给定为第一个参数的文件的内容。

<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<script src="../system/Scriptonit.Engine.js"></script>
<body>
    <pre> ... </pre>
</body>

<script>

    let sci = new ScriptonitInterface();         // initialize
    let args = sci.exeArguments().split("\n");   // take arguments
    let name = args[1]||"";                      // get 1st argument
    let text = sci.file.load(name);              // load file contents
    let disp = document.querySelector("pre");    // find <pre> tag
    disp.innerText = text;                       // display
    sci.window.setTitle(name);                   // set window title
    
</script>

Scriptonit 是一个免费的、非常轻量级的类 Electron 解决方案,专门为那些想要在仍然使用熟悉的 html/js/css 栈的同时制作可执行文件的人而设计。此外,我正在尝试让编程重拾快乐,这个工具确实很有趣。我保证。


1
Scriptonit使用MSHTML.dll和JSCRIPT9.dll(与HTAs相同)。content="IE=EDGE"设置的存在早于Edge浏览器的存在很多年,仅意味着“在可用的最高文档模式下运行MSHTML”。由于最高模式是11,因此该设置等效于content="IE=11"。Edge浏览器(现代或遗留)不会发挥作用。 - LesFerch
@LesFerch 谢谢,现在我知道原因了。但是效果是,如果浏览器有这个元标记,它将像Edge一样运行。如果没有这个元标记,那么老旧的怪异IE将会出现。 - dkellner
它将完全像IE 11一样运行,具有该声明。如果根本没有声明,它将默认为IE = 5模式。如果只有一个DocType声明,则默认为IE = 7模式。在某些情况下,可以通过FEATURE_BROWSER_EMULATION注册表设置更改默认设置。更多细节请参见此处。 - LesFerch
您可以将此代码添加到任何脚本中以验证文档模式和用户代理:alert(document.documentMode + "\n\n" + window.navigator.userAgent); - LesFerch

1
这里有一篇文章,解释了如何使用微软的编译器。虽然不完全符合你的要求,但至少可以作为一个开始,所以我觉得应该发一下。

http://www.phpied.com/make-your-javascript-a-windows-exe/

它不会解析HTML以创建GUI,但至少您可以稍微修改JS代码进行编译,然后在其上构建新的UI。


0
你的桌面应用程序就是你的浏览器吗?你能否创建一个独立的 .html 文件,其中包含 Javascript 代码(而不是通过单独的 URL/.js 文件引用)以及 .css 等文件。
然后你可以分发这个 HTML 文件。双击它将在浏览器中启动,而且不需要远程服务器的要求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接