5

这可能是一个愚蠢的问题,但我所有的谷歌搜索都失败了。问题是:如何开发不需要预安装可再发行组件的 Windows 应用程序?我想创建在不包含 .NET Framework 或类似内容的旧版本 Windows 下也运行的应用程序。

谢谢你,电子狼

4

5 回答 5

7

首先,使用母语编程,例如 C++,没有 CLR。

其次,禁用清单并避免链接外部 DLL(例如 STDC 或 MFC)。

于 2009-12-22T10:42:44.373 回答
4

旧版本的 Windows 是什么意思?
自 Windows 2003 和 .net 1.1 以来,.net 框架就是 Windows 的一部分。
因此,如果您的目标是比 Windows 2003 更新的 Windows 版本,您可以确定 .net 可用。

还有一些解决方案可以自动链接/打包.net 产品,这样您就不需要运送任何可再发行产品等。

更新:
我刚刚发现Mono允许您将整个运行时链接到您的可执行文件中。
他们称该功能为Bundle在此处
阅读更多相关信息。

于 2009-12-22T10:46:39.770 回答
3

使用 Delphi - 尽管 IDE 的较新版本有一些奇怪的错误,但很容易创建不需要可再发行组件的本机 Windows 应用程序。比 C++/win32 更容易使用。

于 2009-12-22T14:04:07.363 回答
2

编辑:正如 eWolf 指出的那样,他不需要 .NET,尽管最初的问题标记为 .NET。

简而言之,Win95/98/2000等一些老机器可能没有安装运行时。由于您指定了 .NET,我假设您想使用 .NET 构建应用程序,但是,您需要事先安装 .NET 运行时才能执行 .NET 应用程序。您可以通过两种方法轻松解决此问题:

  • 手动安装 .NET 运行时或
  • 使用可以检测是否安装了 .NET 运行时的自定义安装程序脚本来安装 .NET 运行时可再发行组件。

如果您正在谈论诸如 C/C++ 之类的本机应用程序,最好的方法是(避免依赖并最小化所需的 DLL 数量)在原始 WinAPI32 中开发它,仅使用许多 Windows 机器的标准 DLL将有 COMMCTRL.DLL、USER32.DLL、ADVAPI.DLL 等等。最终结果将是一个更小的可执行文件。当然,您可以通过将 DLL 静态链接在一起以形成一个庞大的可执行文件来捆绑其他 DLL。

于 2009-12-22T11:32:03.593 回答
1

我推荐你使用WTL,它是一个轻量级的 C++ 框架。它实际上仅比 Win32 API 高出一步,因此您可以获得具有很少依赖关系的小型 EXE。WTL 需要您可以静态链接到的 ATL 框架,这意味着您只需要发布您的 EXE。

另一个值得关注的框架是Qt。但是,这确实需要您在应用程序中提供一些 DLL。Qt 是一个很棒的框架,我认为您会发现它比 WTL 更有效率(当然取决于您的应用程序需求。)

于 2009-12-22T10:48:51.403 回答