测试Windows 7兼容性时需要注意的Delphi问题有哪些?

10

当应用程序在Vista上运行良好时,在测试其与Win7的兼容性时是否需要测试特定问题。

注:我的应用程序使用Systray并具有.Manifest文件。

2个回答

3
如果应用程序在Vista中运行良好,则可以预期在Windows 7中也会同样运行。 如果您的清单文件缺少兼容性部分,则您的应用程序将默认以Vista兼容模式运行,如此处所述。
我认为通过“systray”您指的是通知区域。在Windows 7中增强了用户对通知区域的控制,您的用户可能需要启用您的应用程序图标才能显示在那里。 MSDN文档建议考虑使用通知区域-它确实适用于短期通知,特别是对于没有桌面存在的应用程序。例如,它不适用于快速启动。
在这种情况下,没有理由预期与Delphi相关的问题。
*编辑:来自MSDN文章(带星号的链接):
在应用程序清单中没有兼容性部分的应用程序将默认在Windows 7和未来的Windows版本中接收Windows Vista行为。请注意,Windows XP和Windows Vista会忽略此清单部分,对它们没有影响。 以下Windows组件基于Windows 7中的兼容性部分提供不同的行为: - RPC默认线程池 - 直接绘制锁定 - 不带剪辑窗口的主要直接绘制位块传输(Blt) - GetOverlappedResult API - 程序兼容性助手(PCA)
每种行为(Vista vs. Win7)的详细信息可以在该文章中找到。

我测试了带有COMPATIBILITY块和不带它的两种情况,完全没有任何区别(两种情况都能正常工作)。从用户角度来看,是否有添加兼容性块的必要? - Tom
好的,我已经添加了一些具体信息,但完整的细节在链接的 MSDN 文章中。 - Argalatyr

3
简短的答案似乎是,运行在Windows Vista上没有大问题的大多数应用程序将在Windows 7上工作。如果您从Windows XP迁移到Windows Vista,则需要了解一些好的一般性Win 7应用程序兼容性建议on the CIOL network,但一般摘要如下:
  • 不要假定Windows上的文件夹位置 - 例如,Program Files、My Music等文件夹在Windows的不同版本之间可能会更改路径。例如,从XP开始,我的文档文件夹的位置在每个Windows版本中都有所改变。
  • 在保存信息到注册表或文件夹时使用正确的API - 如果您不使用“官方”API,则可能会遭遇Windows UAC问题。与XP相比,Vista和Windows 7在根据其上下文(当前用户、所有用户、应用程序数据等)保存应用程序数据时容错性较低。
  • 遵守UAC原则 - 自Windows Vista以来,Windows UAC功能已经被削弱,但您仍应根据提供的指导编写和测试应用程序,以便在没有管理员权限的情况下运行,除非绝对必要。
除了这些提示之外:考虑到您的应用程序使用了SysTray,您可能希望查看"Windows 7 Controls for Delphi" from Daniel Wischnewski的alpha版。他还写了12篇文章演示它们的使用,让您感受到该特定区域中一些新的视觉差异。在开发和测试应用程序期间,Delphi 2009有一些Windows 7 / 64位特定错误也已经被报告过,您可能会遇到。

这些警告适用于Vista和Windows 7,因此它们并没有具体回答问题。无论如何,这是很好的建议。同样,提到的错误与D2009 IDE有关,而不是编译程序(后者是问题的主题)。 - Argalatyr
确实。我提到了IDE错误,尽管这是未被请求的信息,但它与有用的信息相关。如果他想在Windows 7下测试和调试他的应用程序,那么他很可能会遇到这个问题 - 因此我想提一下并为他节省一些时间。 - jamiei
2
如果可能的话,还可以进行代码签名。这将避免用户第一次运行应用程序时出现一些不太美观的对话框。 - skamradt
+1 对于代码协同设计(skamradt)非常重要,这将越来越受到重视。 - Argalatyr

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