Приложение GTK в комплекте не будет работать при новой установке Win7

Я сделал приложение C# GTK# в MonoDevelop для задания колледжа, чтобы обнаружить, что оно не будет работать на компьютерах колледжа, потому что у нас нет прав администратора для установки библиотек GTK # или Mono. После некоторых исследований я обнаружил технику использования mkbundle в Cygwin для связывания необходимых DLL с исполняемым файлом. Я следовал этим инструкциям:

http://www.joebest.org/2011/09/mono-and-mkbundle-on-windows.html

Поскольку я не могу проводить тестирование на компьютерах колледжа, находясь дома, я тестирую на виртуальной машине с полностью чистой 64-разрядной установкой Win 7 Pro. Моя машина разработки работает на той же ОС, но здесь нет смысла тестировать на моей машине разработчика, потому что у нее уже есть все необходимые библиотеки, и я не получаю никаких ошибок.

Я могу создать в комплекте исполняемый файл просто отлично, никаких хлопот там. Исполняемый файл в комплекте отлично работает на моем компьютере разработчика. Когда я пытаюсь запустить его на чистой установке 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

Я добавил все библиотеки DLL, которые появились в выводе mkbundle, в папку приложения. Если я удаляю 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

Я также попытался изменить флаг 32BIT с помощью CorFlags.exe, но, похоже, он ни на что не влияет.

Мне просто интересно, знает ли кто-нибудь следующую вещь, чтобы попробовать, потому что я совершенно ошеломлен этим.

1 ответ

По звукам, которые вы хотите использовать mkbundle2 которая выполняет ту же задачу, но для сред выполнения Mono 2.x. Еще одна вещь, на которую следует обратить внимание, это зависимости во время выполнения (т. Е. Код, вызывающий LoadLibrary и такие функции), поскольку они могут не обнаруживаться mkbundles.

Другие вопросы по тегам