【问题标题】:Is it or should it be possible to modify the GUI of an application after it's compiled?编译后是否可以修改应用程序的 GUI?
【发布时间】:2011-01-05 18:16:56
【问题描述】:

我是 Linux 用户,对于使用 Glade 来设计 GUI,我一直很犹豫,因为它生成的 xml 文件很容易被修改。我知道这听起来不是什么大问题,但如果它是一个商业应用,你只是不想让人们改变呢?

我偶尔使用 Mac OS X,我发现他们使用名为“.nib”的文件作为 GUI。我认为它们本质上与 Nextstep 和 Openstep 中使用的类型相同(甚至还有一个 Linux 应用程序可以让您编辑这些文件)。无论如何,这些文件都包含在应用程序包中,并且根据some people,是完全可编辑的。此人声称他甚至成功地编辑了 Keynote 的界面。

现在,为什么会这样呢?最终用户更改界面是否完全可以?还是像传统的 GTK 应用程序那样直接在编译的应用程序代码中使用 GUI 更好?

【问题讨论】:

  • 即使有可能:你为什么要阻止它?可修改性通常是一个加分项(特别是在得到官方支持的情况下,但重点是它是可能的),即使这不是为防止它付出任何努力或做出任何权衡的理由?
  • 即使是“传统的 GTK 应用程序”也可以通过用户的 GTK 主题设置进行更改,还是您也想禁止这样做?
  • 在 OS X 中,nib 文件不再可编辑。在 leopard 之前,它们只是在构建时被复制到应用程序中。然而,现在使用了一种不同的格式,它被编译然后复制到包中。这些新的不可编辑。

标签: linux macos gtk nib glade


【解决方案1】:

OS X nib 文件是一种选择;另一种选择是以编程方式做事。对于 android,XML 文件可以定义 GUI 或程序代码可以做到这一点。在 Windows WPF 中,UI 是用 XML 制作的。火狐/Mozilla? XUL,另一种基于 XML 的 UI 语言。

大多数现代 GUI 工具包都有这两个选项,甚至只是在文件中定义 UI。

但即使是二进制文件也是可修改的。使用一个好的二进制逆向工程工具,它是完全开放的。真正确定的唯一方法是做苹果对 iOS 所做的事情,并运行签名代码;整个捆绑包由密钥签名,如果修改则无法运行。

这对大多数人来说都不是问题。为什么要关心 UI 是否被修改?底层代码不是,因此无法添加或修改功能。

作为一个推论(而且有点离题),您可能有一个有效的担忧是stuff a little more like this

【讨论】:

    【解决方案2】:

    我真的不认为它有问题。如果用户弄乱了他的用户界面,那是他的问题。把它想象成可修改的游戏。用户总是喜欢它们,最终,大多数游戏都从中受益。应用程序的用户界面通常没有什么秘密。如果有,您总是可以进行某种加密。

    正如其他人所说,如果您只想禁止编辑,也可以添加校验和。

    【讨论】:

      【解决方案3】:

      xml 仅指定界面的外观。如果没有编译的事件处理代码,它几乎没有用。我的意见是客户自行承担更改它的风险,您实际上可能会从他们的黑客中获得一些免费的有用改进。

      如果你真的很担心人们会改变它,你总是可以在加载 xml 时添加一个 MD5 摘要验证步骤或其他东西,或者将 xml 字符串编译到头文件中,但这会破坏许多好处。

      【讨论】:

      • 如果你是那种偏执狂,你应该停止编码并寻求帮助。
      【解决方案4】:

      主题引擎可以对您的 GUI 进行实质性的更改,Parasite 等工具也可以。更新 Glade 布局(风险自负)比其中任何一个都安全得多。

      用户自定义 UI 有什么问题?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 2011-09-10
        • 2018-06-29
        • 2014-03-02
        • 2011-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多