質問

それは愚かな質問かもしれませんが、私のすべての私の試みはこれが失敗しました。問題は、再配置可能な再インストールされた再配置を必要としないWindowsアプリケーションをどのように開発できますか? .NETフレームワークや同様のものが含まれていないWindowsの古いバージョンの下でも実行されるアプリケーションを作成したいと思います。

ありがとう、ewolf

役に立ちましたか?

解決

まず、C ++、CLRなしなどの母国語でプログラムします。

第二に、マニフェストを無効にし、外部DLL(STDCやMFCなど)のリンクを避けます。

他のヒント

Windowsの古いバージョンとはどういう意味ですか?
.NETフレームワークは、Windows 2003および.NET 1.1以降のWindowsの一部です。
したがって、Windows 2003より新しいWindowsバージョンをターゲットにしている場合は、.NETが利用可能であることを確認できます。

解決策もあります リンク/パッケージングを自動化します .NET製品の、そのため、再配布可能性などを出荷する必要はありません。

アップデート:
私はちょうどそれを見つけました 単核症 ランタイム全体を実行可能ファイルにリンクできます。
彼らはその機能を呼び出します バンドル.
それについてもっと読んでください ここ.

Delphiを使用 - IDEの新しいバージョンには奇妙なバグがありますが、再配布できないネイティブWindowsアプリケーションを簡単に作成できます。 C ++/Win32よりもはるかに使いやすい。

編集: Ewolfが指摘したように、彼は.NETとしてタグ付けされた元の質問にもかかわらず、.NETを必要としませんでした。

要するに、Win95/98/2000などの一部の古いマシンには、ランタイムがインストールされていない場合があります。 .NETを指定したので、.NETを使用してアプリケーションを構築すると仮定していますが、大きなものがありますが、.NETランタイムを事前にインストールする必要があります。.NETアプリケーションを実行できます。 2つの方法で簡単にそれを回避できます。

  • .NETランタイムを手動でインストールするか、
  • .NETランタイムがインストールされているかどうかを検出できるカスタムインストーラースクリプトを使用して、.NETランタイム再配布可能をインストールします。

C/C ++などのネイティブアプリケーションについて話している場合、(依存を回避し、DLLの数を最小限に抑えるために)取るのに最適なパスは、標準のDLLのみを使用してRAW WinAPI32で開発することです。 commctrl.dll、user32.dll、advapi.dllが名前があります。最終結果は、より小さな実行可能ファイルになります。もちろん、DLLを静的にリンクして1つの大きなマンモス実行可能ファイルを形成することにより、他のDLLをバンドルできます。

使用することをお勧めします wtl, 、これは軽量のC ++フレームワークです。 win32 APIの1つのステップを実際に上回っているため、依存関係がほとんどない小さなexeが得られます。 WTLは、静的にリンクできるATLフレームワークを必要とします。つまり、EXEを発送するだけでいいことを意味します。

見る価値のある別のフレームワークはです QT. 。ただし、これにはアプリケーションにいくつかのDLLを出荷する必要があります。 QTは素晴らしいフレームワークであり、WTLよりも生産的であると思います(もちろん、アプリケーションのニーズに応じて)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top