Bug 383044

Summary: MSVCR100.dll is missing
Product: [Applications] kmymoney Reporter: Evgeniy <xtemp09>
Component: generalAssignee: KMyMoney Devel Mailing List <kmymoney-devel>
Status: RESOLVED FIXED    
Severity: normal CC: flywire0, ralf.habacker
Priority: NOR    
Version: 4.8.0   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed In: 4.8.1
Sentry Crash Report:
Bug Depends on: 380075    
Bug Blocks:    
Attachments: Missing DLL error

Description Evgeniy 2017-08-02 13:21:04 UTC
Created attachment 107038 [details]
Missing DLL error

I can't run the program because MSVCR100.dll is missing.

I tried to install VC redist 2015, however, failed, since it's already been installed. Perhaps, the installer must provide the appropriate DLL file or it must check and download it.


Windows 7 x64
Comment 1 Ralf Habacker 2017-08-02 15:25:44 UTC
You may try a 4.8.1 snapshot for Windows. See https://bugs.kde.org/show_bug.cgi?id=380075#c4 how to get it. 
It would be nice to get a report if this helps.
Comment 2 Evgeniy 2017-08-02 19:11:03 UTC
This snapshot seems to be working. Why did the official release use MSVC and why did the developers not look onto the dependencies of the program binary?
Comment 3 Evgeniy 2017-08-02 19:26:42 UTC
Though, I ought to say that the program has (c) 2000-2016 and the "About KDE" menu item.

It lacks of translation and encryption, the reports look awful since I got used to standard Qt Charts. It's a start, but the program requires polishing.
Comment 4 Jack 2017-08-02 19:42:24 UTC
I'm sure one of the developers will chime in, but if you want to see how polished KMM is, look at it under Linux.  The issue is that the porting of KDE (including all libraries and associated programs) is still a work in progress, so there do appear to be more rough edges.

I believe the encryption issue was discussed recently on the developers mailing list, but all I can currently find is a thread from 2014.  KMyMoney does not do it's own encryption, but uses GnuPG.  As I remember, the issue is whether or not KMyMoney can find the appropriate encryption program - probably gpg2.exe.
Comment 5 Ralf Habacker 2017-08-02 20:17:55 UTC
Git commit 1a96ee0541c3127ae05afde78cf7375793cf9244 by Ralf Habacker.
Committed on 02/08/2017 at 20:17.
Pushed by habacker into branch '4.8'.

Update copyright year in about dialog

M  +1    -1    kmymoney/main.cpp

https://commits.kde.org/kmymoney/1a96ee0541c3127ae05afde78cf7375793cf9244
Comment 6 Ralf Habacker 2017-08-02 20:33:40 UTC
(In reply to Evgeniy from comment #0)
> Created attachment 107038 [details]
> Missing DLL error
> 
> I can't run the program because MSVCR100.dll is missing.
No problem here on Windows 7 x64. 

kmymoney 4.8.0 looks to be compiled with MSVC2012, which uses msvcr120.dll. 

I did not made this installer but from my experience porting KDE apps to Windows since 2000 I would say that this kind of problems are normally caused by having additional pathes in the PATH environment variables which fetches dll from other locations depending on other runtime files not in the related path. 
You may run kmymoney with http://www.dependencywalker.com/ to see where those dll's are fetched from.

> I tried to install VC redist 2015, however, failed, since it's already been
> installed.
vc redist 2015 does not provide msvcr100.dll, You need to install vc redist 2010.
Comment 7 Ralf Habacker 2017-08-02 20:34:18 UTC
(In reply to Evgeniy from comment #2)
> This snapshot seems to be working. Why did the official release use MSVC and
> why did the developers not look onto the dependencies of the program binary?

see comment 6
Comment 8 Ralf Habacker 2017-08-02 20:49:38 UTC
(In reply to Evgeniy from comment #3)
> Though, I ought to say that the program has (c) 2000-2016 and the "About
> KDE" menu item.
Thanks for this pointer, which has been fixed now.

> It lacks of translation 
You did take a look at help->switch application language ?

> and encryption
encryption is available, see bug 382218

> the reports look awful since I got used to standard Qt Charts. 
There are known bugs, see bug 382427 or are you refering to other functional missings in this area ?

>It's a start, but the program requires polishing.
Can you specify this ?
Comment 9 Ralf Habacker 2017-08-02 21:00:30 UTC
(In reply to Jack from comment #4)
> As I remember, the issue is whether or not KMyMoney can find the appropriate encryption program - probably gpg2.exe.

The 4.8.1 snapshots and the coming official 4.8.1 are bundling gpg. The only missing step is to create or import a gpg key. See https://bugs.kde.org/show_bug.cgi?id=382218#c5 for a howto.
Comment 10 Evgeniy 2017-08-03 05:23:38 UTC
>>kmymoney 4.8.0 looks to be compiled with MSVC2012, which uses msvcr120.dll. 
According to the news:
https://kmymoney.org/news.php#itemKMyMoneygoescrossplatform
It's compiled with MSVC 2015, so I tried to install MSVC redist 2015, but failed since it's already been installed. It seems strange to me not to use GCC. Also, linking can be static, so the program can be a few files instead of multi-branched Unix-like directory tree (I mean that 4.8.1 bundle).

>> You did take a look at help->switch application language ?
I didn't check "help->switch application language". I'll check it later and post a bug report. =)

>> encryption is available, see bug 382218
I didn't know it; I just saw disabled the Encryption entry. Bundling GPG with KMyMoney must be the only way out. 

>>Can you specify this ?
>> There are known bugs, see bug 382427 or are you refering to other functional missings in this area ?

I meant only they are not as pretty as standard QChart, compare this (http://www.oldergeeks.com/downloads/gallery/KMyMoney9.png) and the following links:
https://doc.qt.io/qt-5/qtcharts-linechart-example.html
https://doc.qt.io/qt-5/qtcharts-piechart-example.html
Comment 11 Ralf Habacker 2017-08-03 06:40:32 UTC
(In reply to Evgeniy from comment #10)
> >>kmymoney 4.8.0 looks to be compiled with MSVC2012, which uses msvcr120.dll. 
According to https://de.wikipedia.org/wiki/Visual_Studio#Versionsgeschichte the internal version is the number in the dll name. msvcr120.dll contains 12 which is MSVC2013, not MSVC2012. Sorry for the confusion. 

If the installer would not have a required msvc runtime included the error would be say that msvcr120.dll is missing and not msvcr100.dll.

> According to the news:
> https://kmymoney.org/news.php#itemKMyMoneygoescrossplatform
> It's compiled with MSVC 2015,

This statement does not refer to 4.8.0. This relates to the not released yet Qt5/KF5 based version of kmymoney.

> Also, linking can be static, so the program can be a few files instead
> of multi-branched Unix-like directory tree (I mean that 4.8.1 bundle).
This depends on the library type and may also have drawbacks in terms of increased size or is simple impossible like Qt or KDE plugins, which are expected to be shared libraries.
Think of libpng for example, which may be included in several packages. The windows build system on the open suse build service states that libpng is used in 105 packages (https://build.opensuse.org/package/live_build_log/windows:mingw:win32/mingw32-libpng/openSUSE_Leap_42.2/x86_64).

> multi-branched
not sure what you want to say here ? 

> I meant only they are not as pretty as standard QChart, compare this
> (http://www.oldergeeks.com/downloads/gallery/KMyMoney9.png) and the
> following links:
> https://doc.qt.io/qt-5/qtcharts-linechart-example.html
The only difference I see is that this chart has a grid, which could be switched on in kmymoney, see reports->configure->charts->Show grid lines 
Additional the point values could also be switched off, see  reports->configure->charts->Draw values on chart

> https://doc.qt.io/qt-5/qtcharts-piechart-example.html
kmymoney uses the KDChart component, which also have several graphical look outs like shown at https://www.kdab.com/development-resources/qt-tools/kd-chart/. 

What else is 'awful' ?
Comment 12 Evgeniy 2017-08-03 12:05:39 UTC
>>This depends on the library type and may also have drawbacks in terms of increased size or is simple impossible like Qt or KDE plugins, which are expected to be shared libraries.
When it comes to a DE, I agree, when it comes to porting a package onto another platform like Windows, the necessity of multiple shared libraries disappears.

The KMyMoney bundle from (Bug 382218) contains: bin, etc, include, lib, libexec, sbin, share, var, with some of the directories being very multi-branched. It seems like the bundle simulates Unix-style directories, which won't be necessary when static linking is used.

The bin directory contains: 165 dll files and 53 exe files, while kmymoney.exe depends on 25 dlls (some of them kernel32.dll, libstdc++-6.dll etc, they should be shared).

It looks like it uses a port D-Bus. What is D-Bus doing on Windows? The program opens a file and closes it; there is no need for KMyMoney to use IPC on Windows.

>>The only difference I see is that this chart has a grid
I, unfortunately, see antialiasing and hinting. (= Here (http://www.oldergeeks.com/downloads/gallery/KMyMoney9.png) the labels are placed exactly in the way to avoid readability and cause confusion.

Here is an example of QChart:
https://doc.qt.io/qt-5/qtcharts-callout-example.html

Here KDAB pie chart (https://www.kdab.com/wp-content/uploads/stories/software/chart/pie2.png) and QChart pie chart (https://doc.qt.io/qt-5/qtcharts-piechartcustomization-example.html). The latter seems more mature and good-looking. In addition, it's a part of Qt.

Perhaps, I confused the KMyMoney for Windows published on the KMyMoney website (it doesn't work on my computer), the bundle published here (Bug 382218) (it works) and, possibly, KMyMoney of KDE 5. Does KMyMoney for KDE use Qt 5? I just installed KUbuntu and it seems to use Qt 4. Something seems to be not in the place it supposed to.
Comment 13 flywire 2017-08-03 13:11:01 UTC
Also too many digits after decimal points on charts. Confusing.
Comment 14 Evgeniy 2017-08-03 14:19:59 UTC
On the picture the numbers are comma-separated and I didn't even noticed that, because the comma is shown right on a circle of the linechart. Why are those labels rotated and placed on the circles? Is it a special style?
Comment 15 Thomas Baumgart 2017-08-03 14:32:28 UTC
Please keep the contents and discussion with the subject. If you chase another problem, please open a new entry. This is about a missing DLL not number formatting in charts. Thank you in advance.