将Web应用程序加载为Windows桌面应用程序的简单/最佳方法是什么?

10

你好,基本上我有一个使用html5/php等构建的Web应用程序,它是一个类似于Spotify和Pandora的音乐播放器。我想将Web应用程序分发为桌面应用程序,以便人们可以直接从桌面运行它而无需打开浏览器。我不想要像浏览器一样的系统,只需加载Web视图即可(类似于在iOS中仅加载Web视图)(没有选项卡、URL栏等)。

我听说过Prism,但它已经停止开发了,我找不到任何下载链接。您有什么建议吗?

对于Mac Os X,我发现FluidApp非常适合,因为它可以构建独立的应用程序。

对于iOS,我只需通过Web视图加载Web应用程序即可正常工作,这正是我所需要的。对于Android,我基本上也加载了一个Web视图。

Windows让我束手无策地加载Web应用程序以获取独立的桌面应用程序。如果有人能帮我解决这个问题,将不胜感激!

4个回答

7

我自己曾经在寻找一个通用的解决方案。我尝试了TideSDK、AppJS、Appcelerator Titanium、VB.NET本地代码、XCode、Python、C++、Electron、node-webkit等等:基本上你能想到的我都试过了。

注意,Electron很不错,但它只运行在64位处理器上。所以如果您想在32位处理器上运行应用程序,则node-webkit很好。

所以我决定构建自己的开源解决方案,名为WebDGap

目前,WebDGap运行在Windows、Linux、Mac OS X、Google Chrome以及作为Web应用程序!

观看 How To Video学习如何使用该应用程序。

这是一张屏幕截图。 The WebDGap Application

Mac用户可以将导出的应用合并为1个.app Mac文件。这可以通过Automator(和一些shell脚本)完成。
我还为移动用户制作了一个编程游乐场,其中具有此功能,称为 kodeWeave
这是一个我将作为Mac应用程序导出的井字棋游戏: kodeWeave App 现在Web应用程序正在作为本地Mac应用程序运行! Tic-Tac-Toe is now running as a Mac App

WebItWidget在Windows 7上无法工作,因为程序出错。很遗憾。 - vee
WebItWisget是一个被放弃的项目。请使用WebDGap代替。 - Michael Schwartz
一个简单的Hello World应用在您的桌面上的内存消耗是多少? - thdoan
@MichaelSchwartz 感谢截图。我不确定如何解释它 - 这是否意味着 nwjs 正在消耗 39.5 MB 物理内存和 992.6 MB 分页内存,总共超过 1 GB 的内存? 如果是真的,那么对于一个 Hello World 应用程序来说,这是很多的内存。 - thdoan
负面:我的最后一个测试是18MB。虽然我在一台2012年的旧MacBook上运行。 - Michael Schwartz
显示剩余2条评论

3
一个简单的VB.NET应用程序可以解决问题。只需创建一个新的Windows Froms项目,双击表单,在所有内容上打标记并粘贴以下内容:
Public Class Form1

    '############## Settings ##############'

    'Change to your URL
    Dim url As String = "http://google.de"

    'Change to the text the window title should have
    Dim title As String = "Your Title here"

    'Change to the windows size you wish to use
    Dim window_size As Size = New Size(800, 600)
    '                                  ^X^, ^Y^
    '########### End of Settings ##########'

    Dim WithEvents WebBrowser1 As New WebBrowser

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Me.Text = title
        Me.Size = window_size

        Me.Controls.Add(WebBrowser1)

        WebBrowser1.Dock = DockStyle.Fill
        WebBrowser1.Navigate(url)

    End Sub

    Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated

        Dim elements As HtmlElementCollection
        elements = WebBrowser1.Document.GetElementsByTagName("img")

        For Each element As HtmlElement In elements
            element.SetAttribute("border", "0")
        Next
    End Sub
End Class

编辑设置并按下F5运行。就这样,你应该能在桌面应用程序中看到你的WebApp了。

太棒了,非常成功!页面上的JavaScript出现了一些错误,但我设法修复了它们。我唯一的问题是现在可点击的图像周围有一个边框,蓝色的边框和其他的有紫色的边框。当在VB.NET应用程序中加载时。 - YourFriend
我可以重新制造这个问题。这不是一个真正的问题,因为那些边框是IE浏览器的正常边框,而WebBrowser控件是基于IE的,所以这些边框也可以在那里看到。当在所有的img标签上添加border="0"时,这些边框可以被隐藏。我已经更新了代码,所以WebBrowser控件会在加载页面后自动添加它们。希望我能帮到你! - Kimmax
我使用了修改后的代码,但边框仍然存在,我将尝试将CSS添加到图像本身。感谢您的帮助! - YourFriend
哦,那很奇怪,因为我设置了一个简单的测试页面,像这样 <a href="http://google.com"><img src="path/to/pic">Test</img</a>,边框是显示出来的。当我使用修改后的代码时,它就像魔法一样工作。你是使用 <img> 标签还是带有设置了 background-image 的 div?顺便说一句,如果你能接受这个答案就太好了 :) - Kimmax
没问题。很高兴我能帮到你 :3 - Kimmax
显示剩余2条评论

2
谷歌浏览器在选项菜单中有一个“保存快捷方式”的功能。菜单>工具>创建快捷方式...我想是这样。(使用移动设备发布)
当您打开快捷方式时,它将在自己的窗口中打开,就像独立应用程序一样。希望这可以帮助您。
编辑:Prism来自Mozilla。我相信Firefox中有类似的功能。

很遗憾,我不想要一个谷歌浏览器或火狐浏览器的快捷方式,因为有些用户可能使用其他浏览器。我更喜欢它是一个.exe文件,人们可以下载、执行和运行桌面应用程序,该应用程序将作为独立应用程序加载Web应用程序。这样我就可以显示“下载Windows版”和“下载Mac版”。不确定你是否明白。 - YourFriend

0
在Windows上,你可以看一下Microsoft Edge WebView2。它类似于iOS上的WKWebView,但它适用于Windows。你只需要创建一个.NET桌面应用程序,显示一个带有嵌入的WebView2控件的窗口,加载你的网站。然后,你可以构建和打包该应用程序为本机可执行文件,可以在目标Windows平台上运行。

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