Windows

From GnuCash
Revision as of 11:25, 17 March 2007 by Andi5 (talk | contribs) (OpenSSL Error)
Jump to: navigation, search

GnuCash on Microsoft Windows

This page collects various notes about compiling GnuCash on Microsoft Windows. See Windows/Old_Notes for old, solved issues.

Q: Is it possible to compile GnuCash on Windows?

A: Well, compiling is possible, and running as well, but so far not everything runs and we still need plenty of feedback.

Note: Testing indicates that the Windows 9x line (Windows 95, 98, ME) does not run GnuCash.

Q: Where is the binary?

A: Here: https://sourceforge.net/project/showfiles.php?group_id=192&package_id=5582

However, we know compiling is possible, but the runtime testing has just started, and we expect a lot of issues still need to be resolved. This means the source code will change quite quickly and those early testers are expected to follow those source code changes by getting the code from SVN, see below for building from SVN.

Download numbers

The older revisions are being deleted from sourceforge.net again so that only the latest is accessible. Here are the download numbers for previous revisions: r15308 351; r15309 81; r15330 295;15335 534; 15393 116; 15398 335; 15417 716; 15480 665; 15522 387; 15574 940; 15667 .

Instructions for an (almost) automated build

Copied from http://lists.gnucash.org/pipermail/gnucash-devel/2006-September/018588.html

Several people have now compiled and run GnuCash on MS Windows by the mingw32/gcc compiler environment. These instructions explain how everyone else can give it a try as well. We would be happy to hear any further feedback about problems or (hopefully) success in this matter.

We've created a shell script that will download, compile, and install all requirements of GnuCash on Windows and eventually GnuCash itself. It will even make sure to retrieve the most up-to-date gnucash source code directly from SVN. Running this script will probably download ~200MB of data (but all downloaded data will be cached) and will take anything between 0.5 through 5 hours of time. That shell script is located in packaging/win32/install.sh of the gnucash SVN sources.

Before you can execute this shell script (which will do everything else automatically), you have to complete these steps manually:

  • Get the contents of the packaging/win32/ directory of gnucash SVN, most up-to-date from SVN, and copy it to some directory on your Windows machine. Do not use a directory that is one of the parent directories of the path you intend to use for the repository in the next step (c:\soft\repos by default). Possible locations are c:\soft\packaging or c:\soft\downloads.
  • Adapt the directory name variables in the custom.sh file according to your preferences; the defaults would install everything in subdirectories below c:\soft. (Note that due to shell syntax, every windows-style backslash has to be specified as two backslashes.)
  • Execute this downloaded package to install it into the chosen directory, say, C:\soft\msys (which is the $MSYS_DIR variable in custom.sh)
  • Start the MSYS commandline shell by double-clicking the "MSYS" icon on the desktop which should have been created when you installed the MSYS package.
  • Let the automated build begin by typing:
 $INSTALLER_DIR/install.sh   (the complete path to the install.sh)
  • Some of the downloaded packages are installed through graphical installer dialogs where you can choose an installation directory. In those cases, the install.sh script will tell you in the MSYS window the installation directory that you should choose, according to your settings in custom.sh. Please enter only those installation directory in the installer dialog because otherwise the install.sh script cannot find the newly installed software.
  • If there haven't been any errors, you should be able (after several hours of compiling and installing) to start gnucash from the MSYS command line by typing
 c:/soft/gnucash/bin/gnucash

or even without MSYS directly by "Start"-> "Run"-> "c:\soft\gnucash\bin\gnucash.bat"

Please spread the word and report back any problems you encounter. It is probably not too difficult anymore to create a full self-contained package of GnuCash on Windows as well! Some more information is also collected here on this wiki page.

A bit of history

This page used to collect random notes from the time when we manually tried to install each and every part of the requirements. They have been moved to Windows/Old Notes.

Notes

gdb

In addition to Stack Trace, here are a few instructions on how to run gnucash under gdb on Windows:

  • Install "gdb" from mingw.org
  • Modify the installed "gnucash" script to call "exec gdb gnucash-bin.exe" instead of "exec gnucash-bin.exe" at the end
  • Then start gnucash, which will give you the gdb prompt
  • Type "run" at the gdb prompt.
  • Then provoke the crash and type "backtrace" or shorthand "bt" at the gdb prompt to obtain the backtrace, as explained on Stack Trace as well.

You can provide even better stack traces if you tell gdb where in memory dynamically loaded modules got mapped to, because otherwise function calls into those are only written as '??'. See here and here for a way to do this.

install.sh

  • To debug install.sh, change set -e to set -ex at the top of it.
  • Once you have installed Subversion, you might want to checkout and update packaging/win32 as described in SVN.
svn checkout http://svn.gnucash.org/repo/gnucash/trunk/packaging/win32 packaging

Online banking

The current install.sh automated build already builds GnuCash with Online Banking enabled, including HBCI, OFX DirectConnect, and OFX file import methods.

However, in order to set up the online banking connectivity (HBCI or OFX, which are both handled by aqbanking), you need to run a separate setup program of aqbanking. Because of the high complexity of the various online banking techniques, the setup program is a GUI program which is based on the Qt library. These Qt parts are not automatically built by install.sh, but you can enable them as described below.

aqbanking

The GUI installation goes like this for a manual install:

export QTDIR=/c/Qt/4.2.2
export aqbanking_with_qt=yes
install.sh

This should build and install the qt parts of aqbanking as well.

Problems, issues, comments

For any problem that occurs now, you should add a new section below.


Outdated statement in mainline FAQ

The following FAQ in the mainline documentation http://svn.gnucash.org/docs/guide/appendixb_general.html#appendixb_software_windows would benefit from a reference to this page. This http://wiki.gnucash.org/wiki/FAQ#Q:_Is_there_a_version.2Fport_for_Windows.3F is an up-to-date version of the same FAQ, maybe the repository should be updated from the wiki.

Help files not found in the binary distribution

I just installed GnuCash from gnucash-2.0.99-svn-r15522-setup.exe and it is working nicely, except for the help that seems to be absent. When help is requested, the following message pops up:

GnuCash could not find the files for the help
documentation.  This is likely because the
'gnucash-docs' package is not installed.

It would be nice if these can be included in the Windows binary package. Note that my Gtk runtime is configured to work in Dutch, but that should not matter I guess.

You are completely right, it is on our todo list, but not at top priority. -- andi5
Ah, sorry. I had overseen that. -- Bastiaan
Documentation can be built as of r15713. I do not know for sure, but I expect an increase in download size of the binary package by approx. 9 MB. So should the CHM files be included or packaged up in a gnucash-docs-*-setup.exe?

Errors on Windows 98

Hi, I installed SVN r15355 on Windows 98 and got the following error:

"Die Datei LIBGTK-WIN32-2.0.0.DLL ist verknüpft mit dem fehlenden Export-COMDLG32.DLL:PrintDlgExW." Translated this means "the file ... is bound to the missing export ...". GNUcash failed to start.

As mentioned above (Windows#Q: Is it possible to compile GnuCash on Windows?), GnuCash will not run on Windows 98. You need at least Windows 2000.

DLL install error

I get an error like that:

'libgncmodule.la' 'c:/soft/gnucash/lib/libgncmodule.la'
/bin/install -c .libs/libgncmodule.dll.a
c:/soft/gnucash/lib/libgncmodule.dll.a
base_file=`basename ${file}`
  dlpath=`/bin/sh 2>&1 -c '. .libs/'${base_file}'i;echo $dlname'`
make[5]: *** [install-libLTLIBRARIES] Error 1
make[5]: Leaving directory `/c/soft/repos/src/gnc-module'
make[4]: *** [install-am] Error 2

This seems to be only an installation problem. Fine compiling it seems.

I saw this at "make install" when I stopped and restarted the preceding compiling several times. So to me this looks like an artifact of DLLs that somehow "don't fit" to each other. The solution was always to run "make clean" in the source directory so that all DLLs are being deleted, and then starting the compiling again. --Cstim 05:55, 4 December 2006 (EST)

Now I got that: http://rafb.net/p/zYqOJv60.html (also after removing the whole soft directory (besides the downloads dir).Calmar

So you have got these errors in at least three different directories and also in a clean environment. The problem always seems to be a missing .lai file. But surprisingly other directories (among them those that failed in other builds) contain such files. The only solution I know is still to cd into the offending directory and to run make clean && make all install. I am sorry for the inconvenience. -- andi5
I was able to solve the problem, with ./install.sh (repeated) until it comes through. After the 5th try or so, it came through :) Very happy I can satisfy now what I promised to my friend (I mean new year is a good start for him). Thanks again for all your help! Good new year everybody!

Actually I still see this error frequently, even when I completely remove the build/ directory and let it be created from scratch. (?!?) As an alternative, I've now tried a newer libtool version by installing the cvs snapshot libtool-1.5.23a from http://www.gnu.org/software/libtool/ . Maybe the newer version has this bug fixed. --Cstim 10:27, 22 January 2007 (EST)

Seems like using libtool-1.5.23a didn't change a thing. I've written a script that should track down potential errors:
#!/bin/sh
ALL_LIBDIR=` find . -name '*.la' | grep '\.libs' `
RM_THESE=""

for LIB in $ALL_LIBDIR ; do
    DIR=`dirname ${LIB}`
    FNAME=`basename ${LIB}`
    LIBBASE=`basename ${LIB} .la`
    if test ! -f "${LIB}i" -a -f "${DIR}/${LIBBASE}.dll.a" ; then
	echo "File ${LIB}i missing"
	PDIR=`dirname ${DIR}`
	#echo "Do this: rm ${PDIR}/${FNAME}"
	RM_THESE="${RM_THESE} ${PDIR}/${FNAME}"
    fi
done

if test "x${RM_THESE}" != "x"; then
    echo "Do this:"
    echo "rm ${RM_THESE}"
fi

GConf/ORBit COMM_FAILURE

On some computers (Windows 2000/SP4), the following error has been observed, but on other computers GConf runs fine. GConf shows plenty of error messages like these: "Failed to save key /apps/gnucash/window/pages/account_tree/name_visible: Adding client to server's list failed, CORBA error: IDL:omg.org/CORBA/COMM_FAILURE:1.0" and also the "Cannot find default values" dialog is shown on each startup, regardless whether the "setup" is done or not. Also, the startup of GnuCash might open dozens of shell windows one after the other, and the startup of GnuCash is incredibly slow.

This is being reported to the ORBit crew as bug#363648. As a quick workaround, you have to install ORBit2-2.13.3 from here instead of 2.14.2, as this seems to fix that problem.

Failed to fork

When starting GNUCash I receive the following message:

gnucash: [E] "Failed to fork child process."

It is not a fatal error (program continues to load). Is this something I can safely ignore? --Scbash 17:10, 3 December 2006 (EST)

This is from the file process.scm and it concerned with the Finance::Quote script for stock price retrieval. Chris wrote: "That's process.scm which is run during price-quote retrieval. Perhaps guile's (primitive-fork) doesn't work on win32." You can ignore this for now. On the other hand, this means Finance::Quote and price retrieval currently doesn't work yet. --Cstim 16:07, 4 December 2006 (EST)

Reading/writing compressed files

The current win32 SVN code doesn't read or write compressed (gzip'd) files. On Linux, gnucash forks gzip as a child process and pipes the file through it. On windows, there isn't an easy replacement for fork() and pipe(). See src/backend/file/io-gncxml-v2.c:1246 ff.

As a consequence, a linux-stored data file which, by default, is stored in compressed form cannot be read by the Windows version at the moment. If you want to use the linux datafile, you need to switch off file compression beforehand by unticking the option "Compress Files" under Edit->Preferences->General->Files. Or 'mv datafile datafile.gz && gunzip datafile.gz #providing a .gz suffix, and finally unzipping it'

Check Printing characters inverted

Using r1557 on windows 2000, and testing check printing I found each string positioned well but each character was inverted vertically. The baseline for each line was also at the top.

Workaround: Deactivate advanced features of your printer, may be this bug.
So I think this is a bug in Gnome-Print, but I hope we will actually use GtkPrint in GnuCash 2.2. -- andi5


OpenSSL Error

Received the message:

!!! You have uninstalled the Win32OpenSSL-0_9_8d version of OpenSSL,
but its DLLs libssl32.dll, libeay32.dll, and ssleay32.dll are still existing
in C:\WINDOWS\system32. You have to delete (or rename) them manually.
However, if you know these DLLs are needed by some other package,
please contact the gnucash authors so that we can adapt this script. !!!


No such DLLs found in C:\WINDOWS\system32.

The check for either libssl32.dll or libeay32.dll is pretty straightforward, see http://svn.gnucash.org/trac/browser/gnucash/trunk/packaging/win32/install.sh#L320. The files are there and will make problems. -- andi5

Todo

This section is intended mainly for developers to concisely specfiy what issues are open, assigned or closed (and can be removed then).

[ ] R  Compressed files (Mail)
[/]    AqBanking
[ ]    Finance::Quote
[/]    Encoding issues (Bug)
[ ]    Randomness (Mail)
[W] R  GConf/ORBit2
[X] R  Documentation
[X]    LibOFX
[X] R  Text report crashers (Bug, Bug)
[X] R  Packaging

A lot more, fill me
X = done; W = workaround; / = in-progress, not-yet-done, needs-testing