Comments (30)
A bug has been registered on the issue tracker.
Please vote for early fix.
https://issuetracker.unity3d.com/issues/windows-com-throws-the-invalidprogramexception-when-using-ookii-dot-dialogs-library
from unitystandalonefilebrowser.
I have submitted a bug report to Unity regarding this error.
Currently under review, there was no problem up to Unity2023.2.0a14, and it was found that an error occurred from Unity2023.2.0a15.
from unitystandalonefilebrowser.
"In progress" on issue trackerπ
from unitystandalonefilebrowser.
@anonymous2585 I tried it with Unity2023.2.12f1 and the dialog worked.
This is that Unity project.
https://www.dropbox.com/t/52h90sq5zGbxrvvf
from unitystandalonefilebrowser.
diff --git a/Assets/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs b/Assets/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs
index 2bdb8c218..b1e379220 100644
--- a/Assets/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs
+++ b/Assets/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs
@@ -4,7 +4,13 @@ using System;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices;
+#if UNITY_2023_2
+using VistaOpenFileDialog = System.Windows.Forms.OpenFileDialog;
+using VistaFolderBrowserDialog = System.Windows.Forms.FolderBrowserDialog;
+using VistaSaveFileDialog = System.Windows.Forms.SaveFileDialog;
+#else
using Ookii.Dialogs;
+#endif
namespace SFB {
// For fullscreen support
from unitystandalonefilebrowser.
@Thaina
I deleted the Ookii.Dialogs.dll and replaced it with the source, but the same error occurs, so I don't think it is caused by the dotnet standard update.
from unitystandalonefilebrowser.
@zadinvit You can use OpenFileDialog with System.Windows.Forms.dll. However, the old style dialog is displayed.
from unitystandalonefilebrowser.
@anonymous2585
Yes, unfortunately in the mono version of FileDialog, the AutoUpgradeEnabled property does not work, so the old style dialog is displayed.
https://github.com/Unity-Technologies/mono/blob/unity-main/mcs/class/System.Windows.Forms/System.Windows.Forms/FileDialog.cs#L387-L392
Therefore, you have two options: use Unity 2023.1 or earlier, or wait until the bug is fixed.
Also, the mono version of System.Windows.Forms.dll exists in the following path.
[Unity installed folder]\Editor\Data\MonoBleedingEdge\lib\mono\gac\System.Windows.Forms\4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll
from unitystandalonefilebrowser.
Perhaps Unity-Technologies/mono#2003 will fix it.
from unitystandalonefilebrowser.
Perhaps Unity-Technologies/mono#2003 will fix it.
Yes, that is exactly what that PR fixes :).
from unitystandalonefilebrowser.
Backports also merged into 2023.2 and 2023.3.
from unitystandalonefilebrowser.
I'm having the same issue. Any solutions?
from unitystandalonefilebrowser.
Have the same error here, urgent issue, needs to be fixed ASAP
from unitystandalonefilebrowser.
When I downloaded Ookii.Dialog.dll from below and replaced it, the following error message was output.
https://www.ookii.org/software/dialogs/
InvalidProgramException: Invalid IL code in (wrapper managed-to-native) Ookii.Dialogs.Interop.IFileDialog:Advise (intptr,Ookii.Dialogs.Interop.IFileDialogEvents,uint&): IL_0025: ldloc 65535
(wrapper cominterop) Ookii.Dialogs.Interop.IFileDialog.Advise(Ookii.Dialogs.Interop.IFileDialogEvents,uint&)
(wrapper cominterop-invoke) Ookii.Dialogs.Interop.IFileDialog.Advise(Ookii.Dialogs.Interop.IFileDialogEvents,uint&)
Ookii.Dialogs.VistaFileDialog.SetDialogProperties (Ookii.Dialogs.Interop.IFileDialog dialog) (at <31af777adad04cb788cee0ae18e55ae1>:0)
Ookii.Dialogs.VistaOpenFileDialog.SetDialogProperties (Ookii.Dialogs.Interop.IFileDialog dialog) (at <31af777adad04cb788cee0ae18e55ae1>:0)
Ookii.Dialogs.VistaFileDialog.RunFileDialog (System.IntPtr hwndOwner) (at <31af777adad04cb788cee0ae18e55ae1>:0)
Ookii.Dialogs.VistaFileDialog.RunDialog (System.IntPtr hwndOwner) (at <31af777adad04cb788cee0ae18e55ae1>:0)
System.Windows.Forms.CommonDialog.ShowDialog (System.Windows.Forms.IWin32Window owner) (at <6d56e0f579f14156bf364f450d98bf76>:0)
(wrapper remoting-invoke-with-check) System.Windows.Forms.CommonDialog.ShowDialog(System.Windows.Forms.IWin32Window)
SFB.StandaloneFileBrowserWindows.OpenFilePanel (System.String title, System.String directory, SFB.ExtensionFilter[] extensions, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs:38)
SFB.StandaloneFileBrowser.OpenFilePanel (System.String title, System.String directory, SFB.ExtensionFilter[] extensions, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowser.cs:51)
SFB.StandaloneFileBrowser.OpenFilePanel (System.String title, System.String directory, System.String extension, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowser.cs:39)
Currently, Ookii.Dialogs has been deprecated and has been migrated to Ookii.Dialogs-Wpf, so it does not work as is.
from unitystandalonefilebrowser.
Since the dialog can be opened in unity2023.1, it may be a bug in unity2023.2.
from unitystandalonefilebrowser.
I have suspect that it's about unity upgrade dotnet standard from 2.0 to 2.1, which ooki dialog may not been built for?
from unitystandalonefilebrowser.
Hi, is there any workaround? @shiena Did update to Ookii.Dialogs.WinForms help? Or we just need wait for unity fix?
from unitystandalonefilebrowser.
@shiena Were you able to use OpenFileDialog with System.Windows.Forms.dll?
Even with only this simple code, I have the following exception (Unity 2023.2.7f1 and 2023.2.12f1):
using System.Windows.Forms;
public class WindowsFileBrowser
{
public static string BrowseFolderPanel(string initialSelectedPath = "")
{
string filePath = string.Empty;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.InitialDirectory = initialSelectedPath;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
}
}
return filePath;
}
}
InvalidProgramException: Invalid IL code in (wrapper managed-to-native) System.Windows.Forms.FileDialogNative/IFileDialog:SetDefaultExtension (intptr,string): IL_000e: ldloc 65535
(wrapper cominterop) System.Windows.Forms.FileDialogNative+IFileDialog.SetDefaultExtension(string)
(wrapper cominterop-invoke) System.Windows.Forms.FileDialogNative+IFileDialog.SetDefaultExtension(string)
System.Windows.Forms.FileDialog.OnBeforeVistaDialog (System.Windows.Forms.FileDialogNative+IFileDialog dialog) (at <187ea5586d6f4ba8a9a85a7c10b078e1>:0)
System.Windows.Forms.FileDialog.RunDialogVista (System.IntPtr hWndOwner) (at <187ea5586d6f4ba8a9a85a7c10b078e1>:0)
System.Windows.Forms.FileDialog.RunDialog (System.IntPtr hWndOwner) (at <187ea5586d6f4ba8a9a85a7c10b078e1>:0)
System.Windows.Forms.CommonDialog.ShowDialog (System.Windows.Forms.IWin32Window owner) (at <187ea5586d6f4ba8a9a85a7c10b078e1>:0)
System.Windows.Forms.CommonDialog.ShowDialog () (at <187ea5586d6f4ba8a9a85a7c10b078e1>:0)
(wrapper remoting-invoke-with-check) System.Windows.Forms.CommonDialog.ShowDialog()
WindowsFileBrowser.BrowseFolderPanel (System.String initialSelectedPath) (at Assets/WindowsFileBrowser.cs:79)
from unitystandalonefilebrowser.
Thanks a lot!
With your project, I understood why I had the issue.
My System.Windows.Forms.dll file comes from the .NET Framwork (version 4.8.4494.0, 5,64Mo) while yours is from Mono (version 4.6.57.0, 2,74Mo).
With your version of the dll, it works! But the dialog is too ugly for me to give that to our clients π
from unitystandalonefilebrowser.
Nice to know that there is a workaround, even if the UI is a bit outdated.
Could you please create a branch (or Pull Request) for the workaround?
This way one could easily use the workaround by changing the version of StandaloneFileBrowser to be used via Unity's manifest.json
Note that the workaround does not need to be merged into the master branch. Just having it available as a branch should suffice. And the branch can be deleted once Unity fixes the root problem.
from unitystandalonefilebrowser.
Yep, same issue with 2023.2+ π Thanks @shiena for the workaround!
Has anyone found a way to display the more modern UI?
This repo seems to have last been updated over 6 years ago... Are we hopeful that there's even a remote chance that this gets fixed?
from unitystandalonefilebrowser.
@MadStark
The AutoUpdateEnabled
property is required to use the modern UI, but is not supported in the mono version.
#135 (comment)
Therefore, we need to call the native API, but unfortunately there is no workaround because the COM call causes an error.
from unitystandalonefilebrowser.
With the Mono System.Windows.Forms, I have the issue of Unity editor crashing whenever I close it after using the old window UI. Do you have the same thing?
from unitystandalonefilebrowser.
@MadStark
Try copying Mono.Posix.dll and Mono.WebBrowser.dll to the Plugins folder with reference to #76 .
from unitystandalonefilebrowser.
@shiena Thanks! Unfortunately it didn't fix my issue... I think it might be interfering with other things in my project. After I open the browser, next time I will close Unity, it will crash instead!
I'll do some digging!
from unitystandalonefilebrowser.
I took some pull requests and repackaged them as upm.
https://github.com/shiena/UnityStandaloneFileBrowser
from unitystandalonefilebrowser.
Related Issues (20)
- Reference has errors 'unityplastic' HOT 5
- ArgumentException: The Assembly Mono.WebBrowser is referenced by System.Windows.Forms HOT 1
- Can't build for android HOT 1
- This is a license related issue.
- I have a problem after build on mac.
- User home dir shortcuts don't work
- DllNotFoundException (libgdiplus) in Mac
- "Multiple assemblies with equivalent identity have been imported" error for System.Windows.Forms.dll after importing unity package HOT 10
- Doesn't Open In Mac HOT 4
- DllNotFoundException in mac unity HOT 6
- Save/Load panels open in editor but not in standalone - Mac HOT 1
- DllNotFoundException: StandaloneFileBrowser MacOS HOT 1
- Webgl FileBrowser issue
- Infinite loop UI Button OnClick() event when selecting a file/folder when using XR Interaction Toolkit
- Solution - WebGL not working issue
- Open file not working on Mac? HOT 1
- How to start a FilePicker in separate thread/Coroutine? HOT 1
- UnityEditor.dll assembly is referenced by user code, but this is not allowed HOT 1
- Mac M1 Pro. DllNotFoundException: StandaloneFileBrowser assembly:<unknown assembly> type:<unknown type> member:(null) HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unitystandalonefilebrowser.