打包一个HTML5应用程序并将其部署在桌面上

Pack an HTML5 app and deploy it on the desktop

本文关键字:部署 桌面 包一个 HTML5 应用程序      更新时间:2023-10-16

我读了很多文章和堆叠式的问题,但我似乎没有做到。

我想为客户分发一些产品信息,这些信息将以CD或U盘的形式发送出去。以前我用Flash做的。因为flash可以编译成一个名为flash投影仪的EXE,并且可以在不安装的情况下运行我的flash内容。

现在我想给HTML5一个旋转。我需要一种方法把所有东西都打包在CD上,让它在不安装的情况下到处运行。

我听说我可以编译chrome并将其嵌入到c++应用程序中。(http://code.google.com/p/chromiumembedded/)我可以将QT与QtWebkit一起使用。(http://developer.qt.nokia.com/doc/qt-4.8/qtwebkit.html)我可以编译Webkit并将其嵌入到c++应用程序中。。。(http://www.webkit.org/)

这些例子太大了,我没有任何C++技能=(

还有像mozilla chromeless这样的项目(http://mozillalabs.com/chromeless)(和伯克利(https://github.com/sirikata/berkelium)

使用chromless,我的JQuery Javascript无法工作,Berkelium。。。我没有编译。。。

我没有预算http://www.appcelerator.com/或其他付费/商业选择。。。(Flash/Air和Silverlight也不是一个选项)。因为内容也应该在不使用插件的情况下部署在web服务器上。。。

我不需要访问操作系统。我想要的是我的Jquery/Backbone应用程序,它使用JSON文件在桌面客户端中运行,而无需安装。

所以没有浏览器地址栏,只需获取index.html,其他一切都由应用程序处理。。。像全屏和关闭这样的东西会很好。。。

不幸的是,我不能依赖"客户操作系统"的安装浏览器,因为目标群体太大了,我希望有很多旧浏览器。

有人能告诉我如何"轻松"编译一个应用程序吗?这个应用程序可以让我的网络应用程序在没有安全警告的情况下从CD在桌面上运行吗?

或者有没有我可以使用的预编译包?

Node-webkit将Chromium(Chrome)浏览器与Node.js结合在一起。据我所知,你不需要额外的API,但你不需要使用它们,只需创建一个非常短的json文件并压缩你的项目就足够了,你甚至可以将所有内容组合成一个可执行文件。该项目提供二进制文件,因此不需要编译。

https://github.com/rogerwang/node-webkit

我也尝试了Awesomium(它是c++和40mb+)PyWebKit(确实有效,但我的svg鼠标移动监听器没有),因此最终使用了cefpython和pyinstaller。

以下是我刚刚做的一个"一键式窗口web应用程序可执行文件".exe.

  • 下载了cefpython,它附带了一个编译的dll,里面有chromium(20mb)
  • 运行"python-cefssimple.py"查看它是否工作(应该工作)
  • 现在下载pyinstaller
  • 解压缩到某个文件夹
  • 将cefpython的所有文件复制到新创建的pyinstaller文件夹中
  • 从pyinstaller/utils MakeSpec.py和Build.py向下复制一个文件夹
  • 运行"MakeSpec.py-cefsimple.py"为生成的
  • 如果您尝试运行"Build.py-cefsimple.spec",则If会将文件复制到名为dist的文件夹中
  • 如果运行exe,它将不起作用,因为缺少一些dll和一个图标
  • 让我们通过更改规范文件来添加dll(我稍后将其放在文本中)
  • 如果你再次构建它,它会将图标和其他所有内容复制到文件夹中,这样exe就会运行(你会在一个真正的嵌入式chromium框架中看到cefsimple.html)
  • 现在,您可以使用嵌入或pyhton代码来修复http链接,您将获得一个很好的"一键式windows web应用程序可执行文件":-)(请参阅pyinstaller文档中的--onefile选项)

cefsimple.spec:

# -*- mode: python -*-
a = Analysis(['cefsimple.py'],
             pathex=['c:\pyinstaller-2.0'],
             hiddenimports=[],
             hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
           [('icudt.dll', 'icudt.dll', 'BINARY')],
               [('avcodec-54.dll', 'avcodec-54.dll', 'BINARY')],
               [('libEGL.dll', 'libEGL.dll', 'BINARY')],
               [('avformat-54.dll', 'avformat-54.dll', 'BINARY')],
               [('avutil-51.dll', 'avutil-51.dll', 'BINARY')],
               [('d3dcompiler_43.dll', 'd3dcompiler_43.dll', 'BINARY')],
               [('d3dx9_43.dll', 'd3dx9_43.dll', 'BINARY')],
               [('libGLESv2.dll', 'libGLESv2.dll', 'BINARY')],
               [('locales\en-US.pak', 'locales\en-US.pak', 'DATA')],
               [('icon.ico', 'icon.ico',  'BINARY')],
          a.zipfiles,
          a.datas,
          name=os.path.join('dist', 'cefsimple.exe'),
          debug=False,
          strip=None,
          upx=True,
          console=False, icon='icon.ico' )
app = BUNDLE(exe,
             name=os.path.join('dist', 'cefsimple.exe.app'))

如果它应该在任何windows2000+上运行,那么就不需要python,不需要系统库,也不需要额外的dll或图标。

如果你在Windows7 64位上构建它,它将无法在32位系统上工作

如果你在WindowsXP 32位上构建它,它可以在任何地方工作。甚至在葡萄酒中。但不知怎么的,我无法从标题栏的exe中获取图标。必须从外部加载(代码在cefwindow.py中)。

趁它还新鲜的时候问我细节!

编辑:

要激活本地json请求:#BrowserSettings,请参阅:http://code.google.com/p/cefpython/wiki/BrowserSettingsbrowserSettings=dict()browserSettings["universal_access_from_file_users_allowed"]=真browserSettings["file_access_from_file_users_allowed"]=True

要获得一个好的概述,请查看Clint Berry的这篇评论文章。他介绍了TideSDK、AppJS、Node webkit、Sencha Desktop和Brackets Shell,并列出了每种解决方案的优缺点。

编辑:在阅读了评论之后,我为自己的项目选择了Node webkit,它非常有效!它不需要你根据任何特定的模式来构建应用程序。我只是照原样使用了我的标准AngularJS web应用程序,添加了所需的清单文件,并为Windows和OSX构建了它。

正如评论中提到的那样,您可以使用xulrunner据此:https://developer.mozilla.org/en/Getting_started_with_XULRunner您只需下载xulrunner,将其解压缩到一个文件夹中,对其进行配置,并使其在autorun.inf或类似的文件中启动即可。不需要编译(我想你需要在windows上展示它,但其他平台也不应该是问题)。

我为HTML5游戏开发人员制作了一个应用程序,如果你想在windows上运行你的HTML5游戏或应用程序(如本地应用程序),无需托管或手动运行本地服务器即可访问HTML5功能。

WinApps Jx Builder是一个应用程序,允许您将HTML5、java脚本和CSS打包为一个可执行应用程序,用于在windows操作系统上运行Native Like的窗口。从现在起,您只需双击即可在桌面上运行HTML5网站、应用程序和游戏,其余由WinApps JX负责。

但你需要在你的机器上安装谷歌铬框架:

谷歌铬框

-WinApps Jx-

您可以使用IWebBrowser2在C(WinAPI)程序中嵌入浏览器控件。

http://github.com/dns/WinAPI-Embed-Browser/releases

我在github上创建了一个项目,将几个html应用程序包制作成单个EXE文件。

要从EXE/DLL资源访问html文件,请使用:res://programname.exe/test.html作为路径。

您还可以隐藏窗口边框&只是显示HTML应用程序的内容,甚至在全屏上运行。如果您想制作交互式CD,这非常有用。