代码之家  ›  专栏  ›  技术社区  ›  eflorico

不可再发行的Windows程序设计

  •  4
  • eflorico  · 技术社区  · 15 年前

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

    谢谢你,伊沃夫

    5 回复  |  直到 12 年前
        1
  •  7
  •   Pavel Radzivilovsky    15 年前

    首先,用C++语言编写程序,不使用CLR。

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

        2
  •  4
  •   Thomas Zoechling    15 年前

    旧版本的Windows是什么意思?
    .NET框架是Windows 2003和.NET 1.1之后的Windows的一部分。
    因此,如果您的目标是Windows版本高于Windows 2003,则可以确保.NET可用。

    还有一些解决方案, automate linking/packaging 对于.NET产品,这样您就不需要发送任何可再发行文件等。

    更新:
    我刚发现 Mono 允许您将整个运行时链接到可执行文件中。
    他们称之为那个特征 .
    了解更多信息 here .

        3
  •  3
  •   Graham    15 年前

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

        4
  •  2
  •   t0mm13b    12 年前

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

    简而言之,一些较旧的计算机(如Win95/98/2000)可能没有安装运行时。既然您指定了.NET,我假设您希望使用.NET构建一个应用程序,这是一个很大的问题,但是,您需要预先安装.NET运行时,才能执行.NET应用程序。您可以通过两种方法轻松解决这一问题:

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

    如果你正在谈论一个本地的应用程序,比如C/C++,最好的路径(避免依赖性和最小化DLL所需的数量)是,在原始WINAPI32中开发它,只使用许多Windows机器所拥有的标准DLL,CPCTr.DLL,USER 32.DLL,ADVAPI.DLL,但只有少数。最终结果将是一个较小的可执行文件。当然,您可以通过静态地将其他dll链接在一起,形成一个庞大的可执行文件来捆绑其他dll。

        5
  •  1
  •   Rob    15 年前

    我建议你用 WTL ,这是一个轻量级的C++框架。实际上,它只比win32 api高一步,所以您可以得到依赖性很少的小型执行器。wtl需要atl框架,您可以静态链接到该框架,这意味着您只需要发送您的exe。

    另一个值得研究的框架是 Qt . 但是,这需要您在应用程序中附带一些DLL。Qt是一个非常好的框架,我认为您会发现它比WTL更有效率(当然,这取决于您的应用程序需求)。