【问题标题】:Simple/Best way to load Web App as Windows Desktop Application?将 Web 应用程序加载为 Windows 桌面应用程序的简单/最佳方式?
【发布时间】:2013-06-18 00:42:00
【问题描述】:

您好,基本上我有一个使用 html5/php 等构建的网络应用程序。它是一个音乐播放器,类似于 spotify 和 pandora。我想将 Web 应用程序作为桌面应用程序分发,这样人们就可以直接从桌面运行它,而无需打开浏览器。我不喜欢像系统这样的浏览器,只加载 web 视图(类似于在 iOS 中加载 webview)(没有标签没有 url 栏等)

我听说过 Prism,但它已停产,我在任何地方都找不到下载链接。 你有什么建议吗?

对于 Mac Os X,我发现了 FluidApp,它似乎工作得很好,因为它构建了一个独立的应用程序。

对于 iOS,我可以简单地通过 webview 加载 web 应用程序,它工作得很好,正是我需要的。 对于 android,我基本上也加载了一个 webview。

Windows 让我无法通过独立的桌面应用程序加载 web 应用程序。 因此,如果有人可以帮助我,将不胜感激!

【问题讨论】:

    标签: windows html web-applications desktop-application


    【解决方案1】:

    我自己一直在寻找一个全方位的解决方案。我尝试了 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 了解如何使用该应用程序。

    这是一个屏幕截图。

    Mac 用户可以将您导出的应用程序合并到 1 个 .app mac 文件中。这可以通过 Automator(和一些 shell 脚本)来完成。

    还有一个我为移动用户制作的编码游乐场,它内置了这个功能,称为kodeWeave

    这是我要导出为 Mac 应用程序的井字游戏:

    现在网络应用程序作为本地 Mac 应用程序运行!

    【讨论】:

    • WebItWidget 不能在 Windows 7 上运行,因为程序错误。很遗憾。
    • WebItWisget 是一个废弃的项目。请改用 WebDGap。
    • 桌面上一个简单的 Hello World 应用程序的内存消耗是多少?
    • @MichaelSchwartz 感谢截图。我不确定如何解释——这是否意味着 nwjs 正在消耗 39.5 MB 的物理 RAM 和 992.6 MB 的分页 RAM,总共超过 1 GB 的内存?如果属实,那么对于 Hello World 应用来说,这将占用大量内存。
    • 否定:我的最后一次测试是 18MB。虽然我在 2012 年的旧 Macbook 上运行。
    【解决方案2】:

    一个简单的 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 应用程序中加载时。
    • 我可以重现这个问题。这不是一个真正的问题,因为那是普通的 IE broders 并且 webbrowser 控件是基于 IE 的,所以在那里也可以看到这个边框。在所有img 标签上添加border="0" 时可以隐藏边框。我更新了代码,所以网页浏览器控件会在加载页面后自动添加它们。希望能帮上忙!
    • 我使用了修改后的代码,但边界仍然存在,我将尝试将 css 添加到图像本身。感谢您的帮助!
    • 哦,这很奇怪,因为我设置了一个像<a href="http://google.com"><img src="path/to/pic">Test</img</a> 这样的简单测试页面并显示了边框。当我使用修改后的代码时,它就像魅力一样。您是在使用<img> 标签还是带有background-image 设置的div?顺便提一句。如果你能接受这个答案会很好:)
    • 谢谢想通了^.^,接受了答案!对不起,我花了永远 X)
    【解决方案3】:

    Google chrome 在选项菜单中有一个“保存快捷方式”。菜单>工具>创建快捷方式...我想。 (手机发帖)

    当您打开快捷方式时,它会在自己的窗口中打开它。像一个独立的应用程序。希望这会有所帮助。

    编辑:prism 来自 Mozilla。相信firefox也有类似的功能。

    【讨论】:

    • 遗憾的是,我不想要 google chrome 或 firefox 快捷方式,因为某些用户可能正在使用其他浏览器,我希望它是一个 .exe,人们可以下载并执行和运行桌面将 webapp 作为独立应用程序加载的应用程序。这样我就可以显示“Download For Windows”和“Download For Mac”。不确定你是否关注。
    猜你喜欢
    • 2022-01-21
    • 2018-05-12
    • 2018-06-23
    • 2011-07-02
    • 2012-07-17
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多