Вопрос или проблема
Я искал информацию, но пока не нашел ничего полезного, поэтому решил спросить здесь!
Я использую Mac OS X 10.11.1, загрузил и установил Mono 4.2.1 и пытаюсь запустить KeePass 2.31. Я следовал инструкциям здесь, но когда я пытаюсь запустить mono Keepass.exe
, KeePass пытается открыться, но завершает работу и выдает следующие сообщения об ошибках:
System.NotImplementedException: Метод или операция не реализованы.
at System.Windows.Forms.XplatUICarbon.get_SmallIconSize () <0x6e94698 + 0x0001f> in <filename unknown>:0
at System.Windows.Forms.XplatUI.get_SmallIconSize () <0x6e94660 + 0x0001d> in <filename unknown>:0
at System.Windows.Forms.SystemInformation.get_SmallIconSize () <0x6e94628 + 0x00013> in <filename unknown>:0
at KeePass.Forms.MainForm.UpdateUIState (Boolean bSetModified, System.Windows.Forms.Control cOptFocus) <0x6e90f80 + 0x003bb> in <filename unknown>:0
at KeePass.Forms.MainForm.UpdateUIState (Boolean bSetModified) <0x6e90f58 + 0x00023> in <filename unknown>:0
at KeePass.Forms.MainForm.OnFormLoad (System.Object sender, System.EventArgs e) <0x6e2ee20 + 0x02f4b> in <filename unknown>:0
at System.Windows.Forms.Form.OnLoad (System.EventArgs e) <0x6e2e5d8 + 0x00062> in <filename unknown>:0
at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) <0x6e2e3a0 + 0x00080> in <filename unknown>:0
Согласно информации Mono, “Windows.Forms является частью стандартной установки Mono.” Теперь я не уверен, что делать дальше, так как я загрузил последнюю версию Mono, и ни один из документов/руководств не помогает. Я был бы благодарен за вашу помощь! Спасибо.
ОБНОВЛЕНИЕ:
Как предложено в комментариях, я обновил XQuartz, и теперь, когда я запускаю mono KeePass.exe
, получаю следующие ошибки:
System.NotImplementedException: Метод или операция не реализованы.
at System.Windows.Forms.XplatUICarbon.get_SmallIconSize () <0x702b118 + 0x0001f> in <filename unknown>:0
at System.Windows.Forms.XplatUI.get_SmallIconSize () <0x702b0e0 + 0x0001d> in <filename unknown>:0
at System.Windows.Forms.SystemInformation.get_SmallIconSize () <0x702b0a8 + 0x00013> in <filename unknown>:0
at KeePass.Forms.MainForm.UpdateUIState (Boolean bSetModified, System.Windows.Forms.Control cOptFocus) <0x70073f8 + 0x003bb> in <filename unknown>:0
at KeePass.Forms.MainForm.UpdateUIState (Boolean bSetModified) <0x70073d0 + 0x00023> in <filename unknown>:0
at KeePass.Forms.MainForm.OnFormLoad (System.Object sender, System.EventArgs e) <0x6fba000 + 0x02f4b> in <filename unknown>:0
at System.Windows.Forms.Form.OnLoad (System.EventArgs e) <0x6f186a0 + 0x00062> in <filename unknown>:0
at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) <0x6f18468 + 0x00080> in <filename unknown>:0
Unhandled Exception:
System.ArgumentException: Обнаружена пустая ссылка или неверное значение [GDI+ status: InvalidParameter]
at System.Drawing.GDIPlus.CheckStatus (Status status) <0x57e9d58 + 0x0016b> in <filename unknown>:0
at System.Drawing.StringFormat.set_Alignment (StringAlignment value) <0x57eaa48 + 0x00033> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.StringFormat:set_Alignment (System.Drawing.StringAlignment)
at System.Windows.Forms.ColumnHeader.CalcColumnHeader () <0x6ff2280 + 0x00093> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.ColumnHeader:CalcColumnHeader ()
at System.Windows.Forms.ListView.LayoutHeader () <0x6effa58 + 0x000af> in <filename unknown>:0
at System.Windows.Forms.ListView.LayoutDetails () <0x6eff478 + 0x0007b> in <filename unknown>:0
at System.Windows.Forms.ListView.CalculateListView (ListViewAlignment align) <0x6efd1c8 + 0x00057> in <filename unknown>:0
at System.Windows.Forms.ListView.Redraw (Boolean recalculate) <0x6efd150 + 0x0004f> in <filename unknown>:0
at System.Windows.Forms.ListView.ListView_SizeChanged (System.Object sender, System.EventArgs e) <0x6efd120 + 0x0001b> in <filename unknown>:0
at System.Windows.Forms.Control.OnSizeChanged (System.EventArgs e) <0x6830a28 + 0x0006f> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight) <0x6830590 + 0x001e8> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height) <0x683bfc8 + 0x000e3> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCoreInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683bb38 + 0x0034b> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCore (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683baf8 + 0x00036> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x68361c0 + 0x001ae> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:SetBoundsInternal (int,int,int,int,System.Windows.Forms.BoundsSpecified)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedChildren (System.Windows.Forms.Control parent, System.Windows.Forms.Control[] controls) <0x68314b0 + 0x00467> in <filename unknown>:0
at System.Windows.Forms.Layout.DefaultLayout.Layout (System.Object container, System.Windows.Forms.LayoutEventArgs args) <0x6831230 + 0x000cb> in <filename unknown>:0
at System.Windows.Forms.Control.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6830fe8 + 0x00128> in <filename unknown>:0
at System.Windows.Forms.ScrollableControl.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6847de0 + 0x0004b> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout (System.Windows.Forms.Control affectedControl, System.String affectedProperty) <0x6830bb8 + 0x0022b> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout () <0x6840ff8 + 0x00023> in <filename unknown>:0
at System.Windows.Forms.Control.ResumeLayout (Boolean performLayout) <0x68411d0 + 0x002a7> in <filename unknown>:0
at System.Windows.Forms.Control.ResumeLayout () <0x68411b0 + 0x0001b> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:ResumeLayout ()
at System.Windows.Forms.SplitContainer.UpdateLayout () <0x69df630 + 0x00ba3> in <filename unknown>:0
at System.Windows.Forms.SplitContainer.OnLayout (System.Windows.Forms.LayoutEventArgs e) <0x69df5e8 + 0x00013> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout (System.Windows.Forms.Control affectedControl, System.String affectedProperty) <0x6830bb8 + 0x0022b> in <filename unknown>:0
at System.Windows.Forms.Control.OnResizeInternal (System.EventArgs e) <0x6830b28 + 0x0001f> in <filename unknown>:0
at System.Windows.Forms.Control.OnResize (System.EventArgs e) <0x6830b08 + 0x0001a> in <filename unknown>:0
at System.Windows.Forms.Control.OnSizeChanged (System.EventArgs e) <0x6830a28 + 0x00025> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight) <0x6830590 + 0x001e8> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height) <0x683bfc8 + 0x000e3> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCoreInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683bb38 + 0x0034b> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCore (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683baf8 + 0x00036> in <filename unknown>:0
at System.Windows.Forms.SplitContainer.SetBoundsCore (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x6a10c88 + 0x00033> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x68361c0 + 0x001ae> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:SetBoundsInternal (int,int,int,int,System.Windows.Forms.BoundsSpecified)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedChildren (System.Windows.Forms.Control parent, System.Windows.Forms.Control[] controls) <0x68314b0 + 0x00467> in <filename unknown>:0
at System.Windows.Forms.Layout.DefaultLayout.Layout (System.Object container, System.Windows.Forms.LayoutEventArgs args) <0x6831230 + 0x000cb> in <filename unknown>:0
at System.Windows.Forms.Control.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6830fe8 + 0x00128> in <filename unknown>:0
at System.Windows.Forms.ScrollableControl.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6847de0 + 0x0004b> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout (System.Windows.Forms.Control affectedControl, System.String affectedProperty) <0x6830bb8 + 0x0022b> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout () <0x6840ff8 + 0x00023> in <filename unknown>:0
at System.Windows.Forms.Control.ResumeLayout (Boolean performLayout) <0x68411d0 + 0x002a7> in <filename unknown>:0
at System.Windows.Forms.Control.ResumeLayout () <0x68411b0 + 0x0001b> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:ResumeLayout ()
at System.Windows.Forms.SplitContainer.UpdateLayout () <0x69df630 + 0x00b93> in <filename unknown>:0
at System.Windows.Forms.SplitContainer.OnLayout (System.Windows.Forms.LayoutEventArgs e) <0x69df5e8 + 0x00013> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout (System.Windows.Forms.Control affectedControl, System.String affectedProperty) <0x6830bb8 + 0x0022b> in <filename unknown>:0
at System.Windows.Forms.Control.OnResizeInternal (System.EventArgs e) <0x6830b28 + 0x0001f> in <filename unknown>:0
at System.Windows.Forms.Control.OnResize (System.EventArgs e) <0x6830b08 + 0x0001a> in <filename unknown>:0
at System.Windows.Forms.Control.OnSizeChanged (System.EventArgs e) <0x6830a28 + 0x00025> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight) <0x6830590 + 0x001e8> in <filename unknown>:0
at System.Windows.Forms.Control.UpdateBounds (Int32 x, Int32 y, Int32 width, Int32 height) <0x683bfc8 + 0x000e3> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCoreInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683bb38 + 0x0034b> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsCore (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x683baf8 + 0x00036> in <filename unknown>:0
at System.Windows.Forms.SplitContainer.SetBoundsCore (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x6a10c88 + 0x00033> in <filename unknown>:0
at System.Windows.Forms.Control.SetBoundsInternal (Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) <0x68361c0 + 0x000da> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:SetBoundsInternal (int,int,int,int,System.Windows.Forms.BoundsSpecified)
at System.Windows.Forms.Layout.DefaultLayout.LayoutDockedChildren (System.Windows.Forms.Control parent, System.Windows.Forms.Control[] controls) <0x68314b0 + 0x00467> in <filename unknown>:0
at System.Windows.Forms.Layout.DefaultLayout.Layout (System.Object container, System.Windows.Forms.LayoutEventArgs args) <0x6831230 + 0x000cb> in <filename unknown>:0
at System.Windows.Forms.Control.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6830fe8 + 0x00128> in <filename unknown>:0
at System.Windows.Forms.ScrollableControl.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6847de0 + 0x0004b> in <filename unknown>:0
at System.Windows.Forms.ContainerControl.OnLayout (System.Windows.Forms.LayoutEventArgs e) <0x69e02c8 + 0x00017> in <filename unknown>:0
at System.Windows.Forms.Form.OnLayout (System.Windows.Forms.LayoutEventArgs levent) <0x6f06de0 + 0x00027> in <filename unknown>:0
at System.Windows.Forms.Control.PerformLayout (System.Windows.Forms.Control affectedControl, System.String affectedProperty) <0x6830bb8 + 0x0022b> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:PerformLayout (System.Windows.Forms.Control,string)
at System.Windows.Forms.Control+ControlCollection.Remove (System.Windows.Forms.Control value) <0x6ff35e8 + 0x00067> in <filename unknown>:0
at System.Windows.Forms.Form+ControlCollection.Remove (System.Windows.Forms.Control value) <0x7069830 + 0x00113> in <filename unknown>:0
at System.Windows.Forms.Form.RemoveOwnedForm (System.Windows.Forms.Form ownedForm) <0x7069808 + 0x00020> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Form:RemoveOwnedForm (System.Windows.Forms.Form)
at System.Windows.Forms.Form.set_Owner (System.Windows.Forms.Form value) <0x702ec50 + 0x00037> in <filename unknown>:0
at System.Windows.Forms.Form.Dispose (Boolean disposing) <0x702e968 + 0x0012f> in <filename unknown>:0
at System.ComponentModel.Component.Finalize () <0x6a0d5d8 + 0x00018> in <filename unknown>:0
Я регулярно использую KeePass с Mono на MacOS. Я только что обновился с KeePass 2.30 до 2.31 и столкнулся с той же проблемой. KeePass 2.30 работает у меня корректно. Думаю, нам обоим нужно поднять этот вопрос на форумах KeePass.
РЕДАКТИРОВАНИЕ:
Проблема уже была поднята на форумах, я не нашел ее в первый раз, когда искал. Я обвиняю ужасный поиск на SourceForge в этом 🙂
Рекомендация – использовать 2.30 до доступности 2.32.
Вот ссылка:
http://sourceforge.net/p/keepass/discussion/329221/thread/7c096cfc/?limit=25#5cc3/60e2
Ответ или решение
Чтобы запустить KeePass на Mac OS X 10.11.1, необходимо учитывать определенные особенности данного ПО и поддержки Windows Forms на Mac через Mono. Вы столкнулись с проблемами из-за несовместимости текущей версии KeePass и возможными ограничениями в реализации Windows.Forms в Mono.
Пошаговое руководство по установке KeePass на Mac:
-
Проверка совместимости:
При использовании старых версий macOS и Mono, некоторые функции Windows.Forms могут быть не реализованы, как показано в сообщении об ошибке. Прежде всего, рекомендуется откатиться на рабочую версию KeePass 2.30 до выхода обновления. -
Установка Mono:
Убедитесь, что вы используете актуальную версию Mono, так как устаревшие версии могут содержать нерешенные ошибки. Загрузите и установите последнюю версию Mono с официального сайта. -
Установка XQuartz:
XQuartz используется для отображения графических интерфейсов, совместимых с X11. Убедитесь, что XQuartz обновлен до последней версии и запущен перед запуском KeePass. Это необходимо для корректной работы графических элементов Windows.Forms. -
Запуск KeePass:
Попробуйте вернуться к KeePass 2.30, если указанная версия 2.31 вызывает ошибки. Для запуска используйте команду в терминале:mono Keepass.exe
Убедитесь, что вы находитесь в директории, где находится файл
Keepass.exe
. -
Следите за обновлениями:
Посещайте форумы KeePass для получения актуальной информации о решении данной проблемы. Вы можете оставлять свои сообщения о проблемах и предложениях в теме, посвященной вашей проблеме (как указано в ссылке на форуме). -
Возможные альтернативы:
Если проблемы сохраняются, рассмотрите возможность использования KeePassXC, альтернативного клиента, который более нативно поддерживается на macOS без использования Mono. -
Оптимизация поиска решений:
Подписывайтесь на обновления от разработчиков KeePass и Mono. Это поможет своевременно получать информацию об обновлениях и исправлениях, которые могут решить текущие технические затруднения.
Ваш опыт может оказаться ценным для других пользователей, столкнувшихся с аналогичными проблемами, поэтому не забывайте делиться результатами и решениями на официальных форумах и сообществах KeePass.