Build Transmission on Windows

Ask for help and report issues with the Windows version of Transmission
Post Reply
ransagy
Posts: 14
Joined: Wed Aug 18, 2010 6:14 pm

Re: Build Transmission on Windows

Post by ransagy »

Running it right now, Seems fine so far - Still have my mentioned issue, Trying still to investigate further, not much luck so far.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

ransagy
The strange thing about the exception you showed is that it comes from Visual C++ runtime... MingGW compiled programs don't link to that library, they use msvcrt.dll .

In fact, since I don't have M$ Visual Studio or anything like that, my transmission-qt.exe runs without that library.

Perhaps you have Visual Studio or the commercial version of Qt (but that also would make no sense, since the last application is statically linked) and its installation changed msvcrt.dll so that it pulls the other library. Can you use Depends (http://www.dependencywalker.com/) to see who pulls that library? Or, if you have Cygwin, just do:

Code: Select all

$ cygcheck Transmission/TrQt/transmission-qt.exe 
C:\Cygwin\home\rberber\Transmission\TrQt\transmission-qt.exe
  C:\WINDOWS\system32\KERNEL32.DLL
    C:\WINDOWS\system32\ntdll.dll
  C:\WINDOWS\system32\ADVAPI32.DLL
    C:\WINDOWS\system32\RPCRT4.dll
      C:\WINDOWS\system32\Secur32.dll
  C:\WINDOWS\system32\COMDLG32.DLL
    C:\WINDOWS\system32\COMCTL32.dll
      C:\WINDOWS\system32\GDI32.dll
        C:\WINDOWS\system32\USER32.dll
    C:\WINDOWS\system32\SHELL32.dll
      C:\WINDOWS\system32\msvcrt.dll
      C:\WINDOWS\system32\SHLWAPI.dll
  C:\WINDOWS\system32\IMM32.DLL
  C:\WINDOWS\system32\IPHLPAPI.DLL
    C:\WINDOWS\system32\WS2_32.dll
      C:\WINDOWS\system32\WS2HELP.dll
  C:\WINDOWS\system32\OLE32.dll
  C:\WINDOWS\system32\OLEAUT32.DLL
  C:\WINDOWS\system32\WINMM.DLL
  C:\WINDOWS\system32\WINSPOOL.DRV
  C:\WINDOWS\system32\wldap32.dll
Anyway I see no way to prevent using it (and fixing the exceptions you are seeing), if M$ replaced the original msvcrt.dll the only "fix" would be to include a copy with the application, but that copy might cause other problems (different versions can't be loaded into memory, and they stay loaded for a while).
ransagy
Posts: 14
Joined: Wed Aug 18, 2010 6:14 pm

Re: Build Transmission on Windows

Post by ransagy »

I do have Visual Studio 2010 installed here, Indeed. I'll try and fish the exact dependency from it and report back.

EDIT: Depends shows i use c:\windows\system32\MSVCRT.DLL which has Windows 7's RTM buildstring as a version, but the modified date on it is from July 14th, A great deal after i installed this OS or Visual Studio here. Maybe it was updated in some Windows Update hotfix.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

Perhaps I'm just confused, msvcrt = MicroSoft Visual C++ Run Time, but Visual Studio installs libraries like: MS Visual C++ 6 sp6 libraries (mfc42, msvcp60, msvcrt), I'm not sure if that modified msvcrt is the problem, or not.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

Anyone hates those Windows segmented progress bars like I do?
Image

Good news (actually is not news, it has always been there, I just didn't use it before), you can add a parameter like this:

Code: Select all

transmission-qt -style plastique
and it will change look to:
Image
No, its not segmented, is actually two color shades, but it does look a bit weird.

Even better (in my opinion):

Code: Select all

transmission-qt -style cleanlooks
Image
Yes, continuous. Actually it does have cross hatch, thin, and also using two shades of the same color.

There are also:

Code: Select all

transmission-qt -style gtk
transmission-qt -style motif
# and the Windows variants: windows, windowsxp, windowsvista
Bad news, the mac style doesn't work... yet!
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

Beta testing time:

http://ifile.it/clajbtf/Transmission-Qt ... -Setup.exe

Compared to the last release, 2.04, this one changes the application from qtr.exe to transmission-qt.exe and looks and has all the functionality of the latest revisions (just like they look on the previous message). The installer contains a static build of both, transmission and dbus (version 1.4.0).

For those of you building your own, no patches necessary, it builds (almost) out of the box... the build stops while making the utils (a missing -lintl on the 3 executables), but by that time the library is already done, so you can build the Qt application.

If you want the CLI utils (transmission-create, transmission-edit, transmission-show) you can edit the utils/Makefile or run the link command by hand with the missing library.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

First observed problem (with latest build): DBUS is not working at all. That means file and magnet association is opening a second application copy.

It is really 2 problems:
  • Starting Transmission-Qt doesn't start the daemon.
  • Even with a running daemon T can't register with it.
No idea where the problem is. I checked T's code and it looks fine, I checked DBUS' code and it also looks fine... I'll keep searching, if nothing turns out I'll revert to DBUS 1.3.2 which was working fine.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

Just uploaded a new installer for the latest, 2.11, look at the very end of that long message:

viewtopic.php?f=1&t=7612&p=37848#p37848

This installer "fixes" DBUS support. It turned out that there was nothing wrong with Transmission, and this applies to all the previous versions that apparently had broken support for file and magnet association...

I'm building the application with static libraries (a.k.a. static linking), but somehow, somewhere (probably Qt 4.7) there is a dependency to the dynamic DBUS library, it doesn't show (using depends or any other tool) as a library dependency, so probably they are using run time library loading or something similar.

Bottom line for those building their own: you have to include also dbus-1.dll alongside the application.
cadusilva
Posts: 24
Joined: Thu Nov 11, 2010 10:25 pm

Re: Build Transmission on Windows

Post by cadusilva »

I wonder if you have plans to add support for different languages. I would like to make the translation to Brazilian Portuguese. The Transmission-QT is the program I use today to download torrent files and control the Transmission-Daemon on my NAS.

Great work, btw.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

cadusilva wrote:I wonder if you have plans to add support for different languages.
Transmission already has support for many languages, including Brazilian Portuguese.

What you mean is that it is not working... perhaps you should file a bug (at the Wiki).

On the other hand, are you building it yourself? or using the binary downloaded from the link on page 2 of this thread?

Could be something I'm doing wrong while building, I don't know since I don't test other languages, but I can see that the code is already made for translating from to original to any of the supported languages, things like "tr( "Active" )"... problem could be the cross-build environment, gettext, intltool, or something else has to be done to include multiple language support (I don't know if macros like the above, tr(), works at compile time to produce one language or it leaves a mapping to all languages that is resolved at run time based on the environment).

And a different matter, translations are supported, locales are not. That means using it with character sets different than ASCII doesn't work, and it doesn't matter what language the GUI is, the file/directory names with foreign characters can't be read/written/created.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

cadusilva
Correction, Transmission-Qt is not using any translations. It has almost everything in place, but just one translation-source file for Russian that is not being used. Actually README.txt says:
VOLUNTEERS WANTED

- Qt developers and translators are needed
Since Transmission-GTK seems to be using the translations on the source/po directory, the fastest way would be to translate those .po files into Qt's .qm files, and add everything to the project (as resources)... unless I'm still wrong and this line of code:

Code: Select all

qtTranslator.load( "qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
does all the magic (I don't think so, we would still need the translations installed).

Qt's Linguist does read .po files, the references in those are to the GTK sorce code files, but the strings themselves are probably the same.

Anyway, it looks like there's no automatic way from .po -> .qm, since they record the context. But this looks not too hard, an awk or perl script could take the transmission_en.ts file with corresponding <language>.po file and produce transmission_<language>.ts; then with lrelease we get the .qm files, put all of them in a directory, also add them to the resources, and voilá they get included in the application (no need to install them).

Also, you are welcome to translate, could use the pt_BR.po file as guide or help. If you have Qt you could convert to the final form, put the result alongside the application and see if that works.
cadusilva
Posts: 24
Joined: Thu Nov 11, 2010 10:25 pm

Re: Build Transmission on Windows

Post by cadusilva »

So, what's the next step? Where do I go to get started? Do I need to install something?
I am relatively new to the world of QT, Linux and programming. I have yet to join a technical course to get into this area until then unknown to me.
What I can say is that I have the Transmission-QT 2.11 installed and fully functional at this time. Is there any file in any directory that should be translated?
I am also in order to translate the WebUI to make a complete package to the people here who should use more of this "new" (for Windows) and excellent program.
I hope someday Transmission can officially absorb and display the current Transmission-QT, showing it on the download page next to Linux, Web, Terminal and Mac.
Incidentally, I liked so much that I published in my blog an article about this creation.

Finally, do you think of hosting it somewhere like Google Code, SourceForge, GitHub, Ohloh ...? Make it easier to download, monitoring, enhance... Will be good to this work.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

cadusilva wrote:So, what's the next step? Where do I go to get started? Do I need to install something?
As always, there are many ways. You could work with one text file, transmission_en.ts which comes with the source code (and I hope it is up to date), and just add the translations; that needs no installation.

At the other extreme, installing the Qt SDK, you can start from creating that file, use Qt's Linguist to translate, 'compile' the translation, and test it.
I am relatively new to the world of QT, Linux and programming. I have yet to join a technical course to get into this area until then unknown to me.
Translating has nothing to do with the above, its just filling up a file which is just a kind of form, Linguist just presents that form with context (source code), and in a specialized editor. Of course this is possible because the developer already did the hard work.
What I can say is that I have the Transmission-QT 2.11 installed and fully functional at this time. Is there any file in any directory that should be translated?
No, the current installation is mainly one executable. Yes there are many other files, the dbus-daemon executable, and the whole tree of the Web files, but none of those is really needed by the main application, and none is involved in the translation of the main application.
I am also in order to translate the WebUI to make a complete package to the people here who should use more of this "new" (for Windows) and excellent program.
I hope someday Transmission can officially absorb and display the current Transmission-QT, showing it on the download page next to Linux, Web, Terminal and Mac.
Incidentally, I liked so much that I published in my blog an article about this creation.
That's the idea. I agree that now when people hear Transmission, they only think in terms of Mac OSX or Linux.
Finally, do you think of hosting it somewhere like Google Code, SourceForge, GitHub, Ohloh ...? Make it easier to download, monitoring, enhance... Will be good to this work.
No, my primary objective was to make Transmission-Qt build 'out of the box', that was achieved a few versions back. The 'porting' was incomplete since I didn't tackle the use of local languages (anything non-English), Windows is non-standard in that respect (it has 2 different APIs).

Any other objective, in my opinion, should follow the same path: make the necessary changes, put them on the Trac server as proposed enhancements, let the Transmission developers evaluate them, and eventually it may become part of the source code distribution.

Also the developers could do the same they currently do for Mac OSX, provide a binary installer. They don't even need Windows, except if they want to test the product. In my opinion, they already do a lot, adding the Windows monster (80 to 90% of software users) is not an easy task, but since Transmission-Qt can run in Linux and Mac also... to simplify maintenance they could get rid of the other versions (also not easy to do).
cadusilva
Posts: 24
Joined: Thu Nov 11, 2010 10:25 pm

Re: Build Transmission on Windows

Post by cadusilva »

Well, I have translated the file but do not know how to apply it in TransmissionQT to perform some tests and see if everything is right and decent. Above is the link to download.
rb07
Posts: 1400
Joined: Sun Aug 24, 2008 3:14 am

Re: Build Transmission on Windows

Post by rb07 »

As I mentioned above, you use lrelease (a tool from the Qt SDK) to produce the .qm binary file, that's the format the application can use.

FYI I found in the Trac server the only other translation for Transmission-Qt: https://trac.transmissionbt.com/ticket/3570 and there's another, older, version. Perhaps you should do the same.

The existence of those files does not change anything, they still have to be incorporated into the application. My guess is that the Russian translator is doing his own builds, with the extra steps needed to do just that. Once you have the .qm file(s) you have 2 possible ways: embed them as resources into the application, or install them in a place Qt looks for them, my guess, alongside the .exe is fine.
Post Reply