Rookiestyle/KeePassOTP

Does not work on Windows Vista

Closed this issue · 9 comments

Overview

This plugin does not work with KeePass on Windows Vista. I think tihs should be mentioned in the Requirements section of the README.md. It just does not "compile". I don't have an actual error message, sorry.

Steps to Reproduce

  1. Get a PC with Windows Vista.
  2. Install KeePass 2.46
  3. Install KeePassOTP 0.16.1
  4. Try to launch KeePass

Expected Behavior

I'd expect KeePass to prompt for the normal master password, then to prompt for the one for the OTP database.

Actual Behavior

KeePass spits out an error message saying it cannot compile KeePassOTP, then prompts for the password for the regular DB, and never attempts to prompt for the OTP DB password. Like this second DB does not exist.

Sorry to hear that.
Please start Kee Pass with --debug option and attach the error file created by KeePass.

Does it work with 0.18?
Does it work with 0.16?

You can always revert to the version of KeePassOTP that was working previously. Let me know which one that is.

I will try setting up a VM with Vista and hopefully I can reproduce it.

Please start Kee Pass with --debug option and attach the error file created by KeePass.

Done, but this is mostly in Russian - do you think it'll be useful to attach this file?

By the way, here is the error message that pops up (I translated it into English):

The following plugin is incompatible with the current KeePass version:
C:\Program Files\KeePass Password Safe 2\Plugins\KeePassOTP\KeePassOTP.plgx

Have a look at the plugin's website for an appropriate version.

[Expanded Information]
Operation is not allowed due to the current state of the object.
KeePass
   in KeePass.Plugins.PlgxPlugin.Compile(String strTmpRoot, PlgxPluginInfo plgx, String strBuildPre, String strBuildPost)
   in KeePass.Plugins.PlgxPlugin.ReadFile(BinaryReader br, PlgxPluginInfo plgx, IStatusLogger slStatus)
   in KeePass.Plugins.PlgxPlugin.LoadPriv(String strFilePath, IStatusLogger slStatus, Boolean bAllowCached, Boolean bAllowCompile, Boolean bAllowLoad, TextWriter twLog)
   in KeePass.Plugins.PlgxPlugin.Load(String strFilePath, IStatusLogger slStatus)
System.String Compile(System.String, KeePass.Plugins.PlgxPluginInfo, System.String, System.String)

Does it work with 0.18?
Does it work with 0.16?

No idea, it's not easy for me to check, this computer is not connected to the Internet.

You can always revert to the version of KeePassOTP that was working previously. Let me know which one that is.

I never tried any other version. It just happened I needed my OTP DB on Windows Vista and decided to try (for the first time) the latest KeePass and KeePassOTP.

I understand it's the first time you use the plugin on Windows Vista which makes it a bit more difficult.
If e. g. v0.15 had worked I could have analyzed the changes that were done afterwards to narrow down the issue.

The plgxfile is essentially kind of an archive that contains the plugin's sourcecode and this code is compiled at your computer.
It (hopefully) is helpful to attach the error file as I assume the compiler's error messages are included.
I don't understand russian language but maybe there are some error codes, filenames, ... mentioned in the error file

Okay then, here is the error file, you can use Google Translate for some of its parts (there aren't that many parts needed to be translated actually): tmp1B7D.tmp.txt

I set up a WIndows Vista box (64bit) and KeePass 2.46 with KeePassOTP 0.6.1 is working just fine.
Currently I suspect something with the installation of your Vista and/or .Net framework.

Can you try to repair .Net?
I'm running out of ideas but I'm a bit reluctant to state "Does not tun on Windows Vista" as it runs on my VM

My setup is as follows:
Windows Vista -Microsoft Windows NT 6.0.6001 Service Pack 1
.Net Framework 4.5.50709
KeePass 2.46
KeePassOTP 0.16.1

I'm on Vista Home Premium 6.0 (build 6000), 32 bit, .Net Framework 4.0.30319, KeePass 2.46, KeePassOTP 0.16.1.

Is there any chance at all you could downgrade your .Net Framework to test things out? It's a bit hard for me to upgrade - I'm using this computer since 2009 (not regularly though), and haven't had any other complaints about obsolete .Net Framework installation. Also, it's rather difficult for me to connect this computer to the Internet to perform this update.

The current version of KeePassOTP supports parsing of OTP accounts exported from Google Authenticator and requires .NET 4.6.1
I can downport this to require .NET framework 4.5 which was the minium required version since the beginning.
I'm not able to downport any further without impacting performance for larger databases.

Can you download the offline installer for the .NET framework on a different PC and copy it to your Vista box?
https://dotnet.microsoft.com/download/dotnet-framework/
Select the version you'ld like to update to and scroll down to the "Advancded downloads", you'll need the runtime

4.5 does not have an offline installer, but starting with 4.5.1 there is an offline installer available that does not require internet connection during installation.
I retested this and used the offline installer for 4.5.2 do update my VM successfully.

I'm still not 100% sure whether it will solve your issue but have no other idea as of now.

You are right, it works after I have installed .Net Framework 4.5.1. It would be great if the Requirements section of the README.md reflected the fact that .Net Framework should be 4.5 or higher. Otherwise people tend to think that if the environment is good enough to run KeePass 2.42+, it's good enough to run KeePassOTP, which is not true.

Thanks!

Good to know it's working for you now, thanks for confirming my guess