大学の課題のために MonoDevelop で C# GTK# アプリケーションを作成しましたが、GTK# または Mono ライブラリをインストールする管理者権限がないため、大学のコンピューターでは実行されないことがわかりました。いくつかの調査の後、Cygwin で mkbundle を使用して、必要な DLL を実行可能ファイルにバンドルする手法を発見しました。私はこれらの指示に従いました:
http://www.joebest.org/2011/09/mono-and-mkbundle-on-windows.html
自宅にいる間は大学のコンピューターでテストできないため、Win 7 Pro 64 ビットを完全にクリーン インストールした仮想マシンでテストしています。私の開発用マシンは同じ OS を実行していますが、開発用マシンには必要なすべてのライブラリが既にあり、エラーも発生していないため、開発用マシンでテストしても意味がありません。
バンドルされた実行可能ファイルを問題なく作成できます。面倒なことはありません。バンドルされた実行可能ファイルは、私の開発マシンで問題なく動作します。Win 7 のクリーン インストールで実行しようとしても、何も起こりません。ウィンドウは表示されません。エラー メッセージはありません。なし。実行可能ファイルをダブルクリックすると、その名前がタスク マネージャーの [プロセス] タブに一瞬表示されるので、実行中であることだけはわかります。
比較のために、バンドルされていないアプリケーションを実行しようとすると、.NET 4 ランタイムをインストールする必要があるというエラー メッセージが表示されます。.NET 4 ランタイムをインストールすると (大学のコンピューターには .NET 4 がインストールされていることがわかっています)、アプリケーションは次のエラーでクラッシュします。
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: keycommandeditor.exe
Problem Signature 02: 1.0.4560.18753
Problem Signature 03: 4fe8f352
Problem Signature 04: glib-sharp
Problem Signature 05: 2.12.0.0
Problem Signature 06: 4e383483
Problem Signature 07: 2bc
Problem Signature 08: 0
Problem Signature 09: System.DllNotFoundException
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 1033
Additional Information 1: 0bff
Additional Information 2: 0bff8d176610735333c3986b545525d3
Additional Information 3: 9af1
Additional Information 4: 9af19ba95df508dd9c076f2be86ba847
mkbundle の出力に表示されたすべての DLL をアプリケーションのフォルダーに追加しました。フォルダーから glib-sharp.dll を削除すると、エラーは次のようになります。
Problem signature:
Problem Event Name: APPCRASH
Application Name: KeyCommandEditor.exe
Application Version: 1.0.4560.18753
Application Timestamp: 4fe8f352
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7600.16385
Fault Module Timestamp: 4a5bdbdf
Exception Code: e0434352
Exception Offset: 0000b727
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
また、CorFlags.exe を使用して 32BIT フラグを変更しようとしましたが、何の効果もないようです。
私はこれに完全に困惑しているので、誰かが次に試すことを知っているかどうか疑問に思っています.