Launch4J - bundling a JRE for Windows 7 64-bit machines - bundle

I've used Launch4J (along with Inno Setup Compiler) to create a desktop app.
It works fine on Windows 7 32-bit, but on Windows 7 64-bit the JRE hangs. Presumably, this is because I bundled in a 32-but JRE (jre6).
I'm wondering if anyone knows if it's possible (or even necessary) to bundle in one or more JREs so that my same app will work on 64-but systems?
Have read this page - http://java.com/en/download/faq/java_win64bit.xml - and there doesn't seem to be many clues. I was bundling jre6 though, so maybe jre7 has fixed this issue?
Do not have a 64-bit setup to test on, so would be great if anyone with any experience here could share their knowledge.

If you're going to develop and test exclusively in a 32 bit environment I would highly recommend you force your application to run in a 32 bit JRE even on 64 bit machines.
Information on how to configure Launch4J to force 32 bit JRE here: Configure Launch4J to use 32-bit JVM only

Related

Developing on Windows 10 64-bit, backwards compatibility with Windows XP 32-bit

I'm developing and compiling on a Windows 10 64-bit machine. We've discovered an issue that seems to be related to machines running 32-bit machines. If I compile the most current code from a 32-bit machine, the issue goes away.
I'd rather not have to develop on one machine and compile from another if I don't have to. I'd rather not set up a VirtualMachine running a 32-bit version of Windows, just to compile, if I don't have to. So, how are people in the "real world" handling this? I'm using Visual Basic 6 (I know, I know. But "Just upgrade to .NET" is not the answer I'm looking for. I'm working on it. It will take some time. A lot of time.).

Do I have to make allowances for Inno setups on 64-bit Windows?

We've got an ancient of days VB6 app which sometimes needs to be updated and installed on our user's machines. We've begun using Inno, and especially InnoIDE, to make the setup.exe, to get this onto our user's PCs. However, I'm wondering about 64-bit Windows, and Inno setups. We've got a couple of machines in-house, which are 64-bit versions of Windows 7 Professional. I've successfully installed our app, using the setup from Inno, onto a 32-bit Windows XP machine. Can I use the same setup on our 64-bit Windows 7 machines? Will it put the .exe into the C:\Program Files (x86)\ directory structure automatically, or do I have to make allowances for 64-bit versions of Windows?
If your app is only 32-bit, then Inno will automatically take care of doing everything correctly.
Only if your app is mixed or 64-bit do you need to do anything special as rushman says.
There is a very good section in the help file that explains the changes needed.
If you're installing any 64-bit device drivers, the calls to most newdev and setupapi entry points will fail with error code 0xE0000235 (ERROR_IN_WOW64). Those calls only work when invoked from 64-bit code, and Inno doesn't compile 64-bit installers yet. You may work around by using pnputil.exe, by adding a 64-bit stub executable, or by switching to WiX.
For 64-bit INNO intallations you generally only need to add one setup section directive and, obviously, add the 64-bit versions of DLL's and EXE's to the compiled installer.
The setup section directive is:
ArchitecturesInstallIn64BitMode=x64

Including sql server compact in desktop install for win 7 32bit and 64bit

I have a desktop app created in vs10 and am using clickonce install. I must include a database with critical info for the program as part of the install. I am compiling for all versions of windows (32 and 64). But as I understand it, if I include the 32 bit sqlce as part of the installation, it will not work on 64 bit installs. Must I include a 32 bit and 64 bit version of the db and test for windows version before accessing the data? Or is there a simpler solution that I am missing?
You can just include all the required files as content with your app, and it will run for any user and on both x86 and x64 platforms. Just follow the instructions here: http://erikej.blogspot.com/2011/02/using-sql-server-compact-40-with.html

Why do some programs compiled for x86 do not run under x64, while some do

I have seen that some programs which were written by me and assembled for x86 using ml.exe run fine on my Win 7 x64. I believe this is because of Wow technology.
However, there are some programs (not written by me) which don't run. They give the error that:
The version of this file is not compatible with the version of Windows you're running. Check you computer system infromation to see whether you need an x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher
Is there any way I can modify the EXE of these programs to make it run on Win 7 x64. What is the fundamental difference in these programs which make it different from other programs which run transparently.
They're actually 8- or 16-bit programs. Windows x64 runs in Long Mode, which does not support Virtual 8086 Mode, required for such programs. There is no way to make them work short of recompiling them from source or running them in a virtual machine.
One reason can be combination of .NET and native libraries. .NET libraries are compiled in runtime as x64 (if you don't specify explicitly x86) and native libraries run in x86 mode. it cannot run togehther.
Another reason is access to registry. Depending on used API, x86app in wow64 mode can be forwarded to another part of registry. If the registry access API is inconsistent, it can make a problem.

Virtual PC (Program Developed on XP Runs on W7 Problem)

I have a developed a C++ application using 32 bit and it create a executable file. This project has uses some external library like window socket 32bit, Qt GUI and boost library. The dll is located at same directory with the executable.
I wonder how can i run this application on window 7.
MY window 7 version is Home Premium 64 bit. Therefore, i cannot install the XP mode from Virtual PC but some one them reported that using Sun virtual box is functional.
I have try to troubleshoot the executable file using program compatibility but the problem doesn't solve.
Any program that can check external dependencies and identified the issues of running my program on window 7 ?
Please help.
Thanks.
64 bit editions of windows can run 32 bit applications fine. You just need to install the 32 bit versions of the needed libraries and it will work.

Resources