eltos / PasteIntoFile

Paste clipboard data into files and copy file contents directly via hotkey or context menu
MIT License
87 stars 6 forks source link

Windows 8 compatibility: Several Exceptions #32

Closed wtfiwinomgs closed 11 months ago

wtfiwinomgs commented 11 months ago

Describe the bug here, the expected behaviour and what you actually observed as detailed as possible not crash onstart up

To Reproduce

  1. extract the portable vers pasteintofile
  2. on window startup, after few seconds into desktop error message comes out
  3. check the message here https://i.imgur.com/PTR6s8c.png
Paste a minimal code example that causes the bug here

Error message please check screenshot above

Screenshots https://i.imgur.com/PTR6s8c.png

Environment

eltos commented 11 months ago

Which version of .NET Framework do you have?

If you are running an older Windows version make sure the .NET Framework 4.8+ is installed.

wtfiwinomgs commented 11 months ago

Which version of .NET Framework do you have?

under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Net Framework Setup\NDP

I have multiple vers, screenshot attached image

eltos commented 11 months ago

Can you please check HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full and make sure it's ≥ 528049? See here

I cannot reproduce this on win 10, and I don't have win 8 available. The error looks like there are some files missing, broken or incompatible. mscorlib is part of .NET Framework. You could try to repair/reinstall .NET Framework.

wtfiwinomgs commented 11 months ago

Can you please check HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full and make sure it's ≥ 528049? See here

I cannot reproduce this on win 10, and I don't have win 8 available. The error looks like there are some files missing, broken or incompatible. mscorlib is part of .NET Framework. You could try to repair/reinstall .NET Framework.

thanks for the reply, just checked this today it does show 528049 (under the release key)

image

wtfiwinomgs commented 11 months ago

quick thing to add, I happen to re-install a fresh version of windows 10 and it worked fine, been about 2 days so far no crash on start up.

however my laptop on win 10 has this issue.

lastly, I also tried windows 8 and 8.1 fresh windows install, and tested paste into files install also crash on windows start up.

hope this helps.

eltos commented 11 months ago

just checked this today it does show 528049

So the .NET requirement should be fine, good.

quick thing to add, I happen to re-install a fresh version of windows 10 and it worked fine, been about 2 days so far no crash on start up. however my laptop on win 10 has this issue.

Then it's an issue with your laptop - I cannot help you there

lastly, I also tried windows 8 and 8.1 fresh windows install, and tested paste into files install also crash on windows start up.

I only tested with Windows 10 and cannot provide support with Windows 8 as I said. But if you can find the cause, I will happily fix it. Just to clarify one thing: you also get this error when you run the app via double-click? Or not? A log with more details on the error would certainly be helpful.

My next guess would be the UWP notifications, which are Windows 10+ only. You could try removing that dependency - or an old version PasteIntoFile 4.1 which didn't use them - and see if that helps.

wtfiwinomgs commented 11 months ago

@eltos I'll give 4.1 a try thanks

as for the double clicking, it doesn't have any issue. the issue only seems to be at startup/login start of the comptuer. so reboot/restart into windows desktop and the crash message pops in few seconds right after.

wtfiwinomgs commented 11 months ago

another discovery. after clicking "copy file content" and then "paste into file" also causes the crash.

Just realized the crash files are created on C:\crashdumps folder and they are massive.. like half a gb dmp file is created

I zipped it and its now 250MB wondering if you could take a look. github only allow max 25MB so had to upload to another file sharing site link is: https://workupload.com/file/AKTP4dkxhxL

eltos commented 11 months ago

That confirms my previous assumption:

"System.InvalidOperationException" in Microsoft.Toolkit.Uwp.Notifications.dll
Failed initializing notifications

MissingMethodException: Method not found: 'Windows.UI.Notifications.ToastNotificationHistory Windows.UI.Notifications.ToastNotificationManager.get_History()'

Microsoft.Toolkit.Uwp.Notifications.dll!Microsoft.Toolkit.Uwp.Notifications.ToastNotificationManagerCompat.CreateToastNotifier()
Microsoft.Toolkit.Uwp.Notifications.dll!Microsoft.Toolkit.Uwp.Notifications.ToastContentBuilder.Show(Microsoft.Toolkit.Uwp.Notifications.CustomizeToast customize)
PasteIntoFile.exe!PasteIntoFile.Program.ShowBalloon(string title, string[] message, ushort expire, string link, bool silent)
PasteIntoFile.exe!PasteIntoFile.Dialog..ctor.AnonymousMethod__2(object sender, System.EventArgs args)
PasteIntoFile.exe!PasteIntoFile.ExplorerUtil.AsyncRequestFilenameEdit(string filePath, bool edit)
PasteIntoFile.exe!PasteIntoFile.Dialog.Dialog(string location, string filename, bool? showDialogOverwrite, bool? clearClipboardOverwrite, bool overwriteIfExists)
PasteIntoFile.exe!PasteIntoFile.Program.RunPaste(PasteIntoFile.Program.ArgsPaste args)
PasteIntoFile.exe!PasteIntoFile.Program.Main.AnonymousMethod__8_1(PasteIntoFile.Program.ArgsPaste opts)
CommandLine.dll!CommandLine.ParserResultExtensions.MapResult<PasteIntoFile.Program.ArgsPaste, PasteIntoFile.Program.ArgsCopy, PasteIntoFile.Program.ArgsConfig, PasteIntoFile.Program.ArgsWizard, PasteIntoFile.Program.ArgsTray, int>(CommandLine.ParserResult<object> result, System.Func<PasteIntoFile.Program.ArgsPaste, int> parsedFunc1, System.Func<PasteIntoFile.Program.ArgsCopy, int> parsedFunc2, System.Func<PasteIntoFile.Program.ArgsConfig, int> parsedFunc3, System.Func<PasteIntoFile.Program.ArgsWizard, int> parsedFunc4, System.Func<PasteIntoFile.Program.ArgsTray, int> parsedFunc5, System.Func<System.Collections.Generic.IEnumerable<CommandLine.Error>, int> notParsedFunc)
PasteIntoFile.exe!PasteIntoFile.Program.Main(string[] args)

The notifications are not really important, they are only shown

  1. after pasting in autosave mode to remind you that you can "Hold shift key during save to show option window.".
  2. to notify if there is an updated version available

The stack trace you provided is case 1 (but the file should have been saved nevertheless). I assume the autostart-into-tray exception originally reported is case 2.

eltos commented 11 months ago

1085c12b6f272c4227c063c210b7a24e6f0da19d should catch and ignore the error

Can you give https://github.com/eltos/PasteIntoFile/suites/17661701349/artifacts/1010106334 a try?

wtfiwinomgs commented 11 months ago

@eltos sorry im not very good at troubleshooting programming language etc in fact really bad at it. do I need to do anything special with the debug tool?

cause the current one already generates the dump file, so if this version crash it'd also do the same? how does it debug?

eltos commented 11 months ago

No, nothing special, you can treat it exactly like the portable version. Just unzip and do the same as before. If it does not crash anymore, then the change I did there actually worked. If it still does, you can send the log again.

wtfiwinomgs commented 11 months ago

No, nothing special, you can treat it exactly like the portable version. Just unzip and do the same as before. If it does not crash anymore, then the change I did there actually worked. If it still does, you can send the log again.

so I replaced the old paste into files and use the debugged ver. I havent tested the startup yet but using copy file content -> paste into files causes the crash and dmp file

the new dmp file is here https://workupload.com/file/vrX7hs4vMm6

wtfiwinomgs commented 11 months ago

another one to add, it generated 2 more different dmp files, one is svhost and then paste into files. never seen these 2 prior. https://workupload.com/file/2kLn584VKpA

eltos commented 11 months ago

Looks like the issue with UWP Notifications is fixed.

This is a different issue now

System.ObjectDisposedException
    System.Windows.Forms.dll!System.Windows.Forms.Control.CreateHandle() #5780
    System.Windows.Forms.dll!System.Windows.Forms.Form.CreateHandle() #3675
    System.Windows.Forms.dll!System.Windows.Forms.Control.Handle.get() #2865
    System.Windows.Forms.dll!System.Windows.Forms.Control.SetVisibleCore(bool value) #12130
    System.Windows.Forms.dll!System.Windows.Forms.Form.SetVisibleCore(bool value) #2676
    System.Windows.Forms.dll!System.Windows.Forms.Control.Visible.set(bool value) #4379
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) #3393
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) #3348
    System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm) #1496
    PasteIntoFile.exe!PasteIntoFile.Program.RunPaste(PasteIntoFile.Program.ArgsPaste args) #200
    PasteIntoFile.exe!PasteIntoFile.Program.Main.AnonymousMethod__8_1(PasteIntoFile.Program.ArgsPaste opts) #138
    CommandLine.dll!CommandLine.ParserResultExtensions.MapResult<PasteIntoFile.Program.ArgsPaste, PasteIntoFile.Program.ArgsCopy, PasteIntoFile.Program.ArgsConfig, PasteIntoFile.Program.ArgsWizard, PasteIntoFile.Program.ArgsTray, int>(CommandLine.ParserResult<object> result, System.Func<PasteIntoFile.Program.ArgsPaste, int> parsedFunc1, System.Func<PasteIntoFile.Program.ArgsCopy, int> parsedFunc2, System.Func<PasteIntoFile.Program.ArgsConfig, int> parsedFunc3, System.Func<PasteIntoFile.Program.ArgsWizard, int> parsedFunc4, System.Func<PasteIntoFile.Program.ArgsTray, int> parsedFunc5, System.Func<System.Collections.Generic.IEnumerable<CommandLine.Error>, int> notParsedFunc)   
    PasteIntoFile.exe!PasteIntoFile.Program.Main(string[] args) #137

Fixed in 695fe4ab4515fa1efa8f17604f07360e53f8637c https://github.com/eltos/PasteIntoFile/suites/17710210312/artifacts/1013832302 Can you give it a try @wtfiwinomgs?

eltos commented 11 months ago

And the second one you posted is related to CheckForUpdates. Windows.Web.Http.HttpClient also requires Windows 10 (introduced in 10.0.10240.0).

System.TypeLoadException: "Could not find Windows Runtime type 'Windows.Web.Http.HttpClient'."
    mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<System.__Canon>(ref System.__Canon stateMachine)
    PasteIntoFile.exe!PasteIntoFile.Program.CheckForUpdates() #483
    PasteIntoFile.exe!PasteIntoFile.Program.RunTray(PasteIntoFile.Program.ArgsTray args) #323
    PasteIntoFile.exe!PasteIntoFile.Program.Main.AnonymousMethod__8_5(PasteIntoFile.Program.ArgsTray opts) #142
    CommandLine.dll!CommandLine.ParserResultExtensions.MapResult<PasteIntoFile.Program.ArgsPaste, PasteIntoFile.Program.ArgsCopy, PasteIntoFile.Program.ArgsConfig, PasteIntoFile.Program.ArgsWizard, PasteIntoFile.Program.ArgsTray, int>(CommandLine.ParserResult<object> result, System.Func<PasteIntoFile.Program.ArgsPaste, int> parsedFunc1, System.Func<PasteIntoFile.Program.ArgsCopy, int> parsedFunc2, System.Func<PasteIntoFile.Program.ArgsConfig, int> parsedFunc3, System.Func<PasteIntoFile.Program.ArgsWizard, int> parsedFunc4, System.Func<PasteIntoFile.Program.ArgsTray, int> parsedFunc5, System.Func<System.Collections.Generic.IEnumerable<CommandLine.Error>, int> notParsedFunc)
    PasteIntoFile.exe!PasteIntoFile.Program.Main(string[] args) #137

506247f578788b74e2dc620544b58a0b16449819 limits update checks to Windows 10+

@wtfiwinomgs please test https://github.com/eltos/PasteIntoFile/suites/17710681520/artifacts/1013864149

wtfiwinomgs commented 11 months ago

And the second one you posted is related to CheckForUpdates. Windows.Web.Http.HttpClient also requires Windows 10 (introduced in 10.0.10240.0).

System.TypeLoadException: "Could not find Windows Runtime type 'Windows.Web.Http.HttpClient'."
  mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<System.__Canon>(ref System.__Canon stateMachine)
  PasteIntoFile.exe!PasteIntoFile.Program.CheckForUpdates() #483
  PasteIntoFile.exe!PasteIntoFile.Program.RunTray(PasteIntoFile.Program.ArgsTray args) #323
  PasteIntoFile.exe!PasteIntoFile.Program.Main.AnonymousMethod__8_5(PasteIntoFile.Program.ArgsTray opts) #142
  CommandLine.dll!CommandLine.ParserResultExtensions.MapResult<PasteIntoFile.Program.ArgsPaste, PasteIntoFile.Program.ArgsCopy, PasteIntoFile.Program.ArgsConfig, PasteIntoFile.Program.ArgsWizard, PasteIntoFile.Program.ArgsTray, int>(CommandLine.ParserResult<object> result, System.Func<PasteIntoFile.Program.ArgsPaste, int> parsedFunc1, System.Func<PasteIntoFile.Program.ArgsCopy, int> parsedFunc2, System.Func<PasteIntoFile.Program.ArgsConfig, int> parsedFunc3, System.Func<PasteIntoFile.Program.ArgsWizard, int> parsedFunc4, System.Func<PasteIntoFile.Program.ArgsTray, int> parsedFunc5, System.Func<System.Collections.Generic.IEnumerable<CommandLine.Error>, int> notParsedFunc)
  PasteIntoFile.exe!PasteIntoFile.Program.Main(string[] args) #137

506247f limits update checks to Windows 10+

@wtfiwinomgs please test https://github.com/eltos/PasteIntoFile/suites/17710681520/artifacts/1013864149

thanks a lot for the troubleshoot, I'll be testing it when I get back.

quick question about the error generated by the checkforupdate you mentioned. in pasteintofiles, I don't recall seeing any options to check for update, so why would this issue would come up at all?

eltos commented 11 months ago

quick question about the error generated by the checkforupdate you mentioned. in pasteintofiles, I don't recall seeing any options to check for update, so why would this issue would come up at all?

Monthly update check option is on by default, there is no checkbox for it, just the user preferences file. It pings GitHub, and if there's a new version you'll get a notification.

wtfiwinomgs commented 11 months ago

@eltos ok so after trying for a day or so, it didn't seem to crash at first because it would use to crash everytime it's used or on startup.

however a crash was generated last night while not using it at all which was really weird and I only found out after using the PC in the morning. heres the dmp file it generated but much smaller this time.

rundll32.exe.10856.zip

eltos commented 11 months ago

rundll32 is a windows library and not related to PasteIntoFile.

wtfiwinomgs commented 11 months ago

rundll32 is a windows library and not related to PasteIntoFile.

is the c:\crashdumps folder not generated by PasteIntoFile? I thought all the dmp files generated in there is due to PasteIntoFile

eltos commented 11 months ago

No, crash dumps are generated by windows. The filenames refer to the program that crashed.

wtfiwinomgs commented 11 months ago

No, crash dumps are generated by windows. The filenames refer to the program that crashed.

that make sense though I always thought window's crash files are in temp folder instead

heres a crash created by pasteintofiles on startup, though the startup from yesterday didnt crash but todays did, not sure why.

https://workupload.com/file/Du8X7ascMKA

eltos commented 11 months ago

heres a crash created by pasteintofiles on startup, though the startup from yesterday didnt crash but todays did, not sure why.

This is the same Windows.Web.Http.HttpClient related error as before. The path in the dump says C:\Users\Administrator\Desktop\PasteIntoFile_v5.1_portable\PasteIntoFile.exe - which looks like the old stable version, not the PasteIntoFile_debug\PasteIntoFile.exe from the debugging build above (unless you renamed it). Most likely, the old version is still registered for autostart. Could you double-check this?

I made a build with unique build number, to reassure. I also switched to the platform independent HttpClient for update checks, and there is now an options setting in the top left corner of the settings wizard to disable them altogether. So if that one doesn't work with Windows 8, then I don't know: https://github.com/eltos/PasteIntoFile/suites/17863183074/artifacts/1025132219

grafik

wtfiwinomgs commented 11 months ago

heres a crash created by pasteintofiles on startup, though the startup from yesterday didnt crash but todays did, not sure why.

This is the same Windows.Web.Http.HttpClient related error as before. The path in the dump says C:\Users\Administrator\Desktop\PasteIntoFile_v5.1_portable\PasteIntoFile.exe - which looks like the old stable version, not the PasteIntoFile_debug\PasteIntoFile.exe from the debugging build above (unless you renamed it). Most likely, the old version is still registered for autostart. Could you double-check this?

I made a build with unique build number, to reassure. I also switched to the platform independent HttpClient for update checks, and there is now an options setting in the top left corner of the settings wizard to disable them altogether. So if that one doesn't work with Windows 8, then I don't know: https://github.com/eltos/PasteIntoFile/suites/17863183074/artifacts/1025132219

grafik

I was sure I used one of the version let me double check again.

also you meant to say on windows 8/8.1 to diable auto update and auto start up to prevent the crashes as a workaround?

edit: to add, reason the path is the same is because I deleted the old files in it and extract the new one. but i'll try the one in latest link

eltos commented 11 months ago

also you meant to say on windows 8/8.1 to diable auto update and auto start up to prevent the crashes as a workaround?

No, the platform-independent implementation should prevent the crash once and for all, allowing you to use the program normally. If not (which I don't expect), or if you don't want update checks, you can disable these.

wtfiwinomgs commented 11 months ago

also you meant to say on windows 8/8.1 to diable auto update and auto start up to prevent the crashes as a workaround?

No, the platform-independent implementation should prevent the crash once and for all, allowing you to use the program normally. If not (which I don't expect), or if you don't want update checks, you can disable these.

hey, I could say the issue is likely resolved. so far no crashes generated at all over last two days. thank you very much for the patience and help, end-user almost never get direct support like this, not to mention back to back assistance. thanks again man!

edit: @eltos btw, is there a way to disable opening the directory path automatically each time a file is pasted?

eltos commented 11 months ago

hey, I could say the issue is likely resolved. so far no crashes generated at all over last two days. thank you very much for the patience and help, end-user almost never get direct support like this, not to mention back to back assistance. thanks again man!

Great! I'll close the issue then.

If you like the app, please consider supporting the development of this and other free and open source projects: https://github.com/sponsors/eltos

.

is there a way to disable opening the directory path automatically each time a file is pasted?

Not directly, autosave mode will always open the file explorer (or use any of the already open ones). But the file explorer is not opened if you use paste-into-subdirectory (STRG), if you use batch mode, or if you don't use autosave. But an option to disable that could easily be added. If you want, you can open a new issue and describe your use case.

wtfiwinomgs commented 11 months ago

@eltos sorry to bump again, I tried to donate but I only use paypal and not cc, do you have a paypal donation link or address?

eltos commented 11 months ago

Looks like they removed PayPal support earlier this year. But Ko-fi does support it: https://ko-fi.com/eltos Thanks a lot!