[SOLVED] Problem with release
-
Hi,
I finished my application. It is debugged on win 7. However, when I try it on win xp, the Icons (copy, cut, paste, etc) do not show up and some function makes the app crash.
I tried to compile the application on win 7, and I found something! When I installed the msvc2008 and msvc2010 on the other computer... the program compiled with win 7 started to work completely.
I think that my problem is that I need some sort of installer to installer the libraries along with the program on win xp. Where do I begin with that?
thanks for your help
-
You can use
"Qt installer framework":http://qt.gitorious.org/installer-framework
"Doc":http://doc-snapshot.qt-project.org/qtifw-1.2/index.html -
For Windows with this tool "http://dependencywalker.com/":http://dependencywalker.com/
-
Missing icons usually mean missing image format plugin like qico4.dll. those should be placed in <your app dir>\imageformats<plugin name>.dll.
Dependency walker does not show dynamically loaded libraries (plugins) by default. You need to use the "profile" feature for that.App crashing is not something I would suspect Qt of and is not caused by missing dll. It's more likely a bug in your code, eg. trying to do something with icon without checking if it actually loaded.
-
Ok.. you are right.
When I do profile, on a computer where it works, I get Dependency Walker to output
@LoadLibraryW("C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\plugins\iconengines\qsvgicon4.dll") called from "QTCORE4.DLL" at address 0x670ECF66.
Loaded "QSVGICON4.DLL" at address 0x10000000. Successfully hooked module.
Unloaded "QSVGICON4.DLL" at address 0x10000000.@However, when I add the dll in the Files section in Inno like so...
@Source: "C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\plugins\iconengines\qsvgicon4.dll"; DestDir: "{app}";@and install in a "virgin" computer, Dependency Walker jump to the next dll (without any error showing)
@LoadLibraryW("C:\WINDOWS\system32\gdi32.dll") called from "QTCORE4.DLL" at address 0x670EDA6E.
LoadLibraryW("C:\WINDOWS\system32\gdi32.dll") returned 0x77F10000.
GetProcAddress(0x77F10000 [GDI32.DLL], "GetCharWidthI") called from "QTGUI4.DLL" at address 0x65253C78 and returned 0x77F3DF75.
LoadLibraryW("C:\WINDOWS\system32\wintab32.dll") called from "QTCORE4.DLL" at address 0x670EDA6E.@ -
Basically you should put them in a structure that is below the "plugins" directory in your Qt installation, so if DW shows you "C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\plugins\iconengines\qsvgicon4.dll" you should put it in <app dir>\iconengines\qsvgicon4.dll. In inno this would be "{app}\iconengines" I think.