I was going to post this, but managed to dig up the answer, so here it is in case anyone else is looking...
My app installs a windows service via:
string[] installargs = new string[] { binaryname };
ManagedInstallerClass.InstallHelper(installargs);
However on a 64-bit platform I want to force the installation to use the 64-bit installer (the equivalent of the Framework64/InstallUtil)
How do I get ManagedInstallerClass.InstallHelper to run the 64-bit version?
Answer: The framework uses the specific installer for the build you are targetting. ie. if you have built an x64 framework and run on a 64-bit OS, it will use the Framework64/InstallUtil. If you have targetted a 32-bit or Any CPU build and run on a either 32-bit or 64-bit OS it will use the Framework/InstallUtil.
Note: a 32-bit build installed on a 64-bit OS will still use the Framework/InstallUtil. there is no workaround - you cant have a 32-bit installer install a 64-bit service. You have to build a separate x64 installer if you need to install a 64-bit service.
Source - Microsoft Forums.
Related
electron-builder is calling 32bit installer causing paths point to WOW64 equivalents instead of the real x64 paths.
Process that calls installer is 64bit, then 32bit installer is called and eventually application that is "runAfterFinish" is 64bit.
How can I overcome this issue and force installer to call x64 version?
Tested on Windows 10, electron-builder 19.16.3
Builder ran with --x64 option gives output:
Building NSIS installer
Packaging NSIS installer for arch x64
Calling installer with ... /D=path argument would also solve the problem, but it is not taking this into account.
I don't know anything about electron builder but I do know that a 32-bit NSIS installer can install 64-bit programs.
Use SetRegView to change to the 64-bit registry view and use the macros in x64.nsh to turn filesystem redirection on and off.
I tried to use the Rails Installer to get a ruby on rails environment on my Windows 7 64bit today and the .exe won't run because it's made for 32bit instead of 64bit.
Update When I try to start the installer, this message pops up:
Here is the translation:
This version of the file is not compatible with the running version of Windows.
Open the system information of the computer to check if a x86 (32bit) or x64
(64bit) version of this application is neccessary and contact the software vendor.
Is there a 64bit alternative for the installer?
64bits Windows can run 32bits applications, that is what WOW64 layer provides (Windows on Windows)
However, there are specific things you can't perform, like accessing OLE or using 64bits DLLs from 32bits applications or viceversa.
If the issue you're having is connect to a MySQL installation (something you're not mentioning) you should take a look to this blog article:
http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/
Hope that helps.
I have installed the Advantage .NET Data Provider Release 9.0 for Windows
64-bit on a Windows 2008 R2 64-bit server. I am using SQL Server 2008 R2. I am using the Advantage Data Provider within a Microsoft SSIS package. When I try to transfer data I get
the error "System.DllNotFoundException: Unable to load DLL 'ace32.dll':
The specified module could not be found."
I am purely guessing at this point, but I think this should help.
Unfortunately with the 9.x version of the .Net provider only the 32-bit version of ACE was deployed. In addition, no clients included the 64-bit version of ACE.
(side note, in 9.x the 64-bit version of ACE was still named ace32.dll, but in 10.x it was changed to ace64.dll and is deployed with all clients that support 64-bit)
Try downloading the 64-bit version of the Advantage Server (see link below to 9.0). The install is just a self extracting zip, extract the contents (don't install) and grab the ACE32.dll and AXCWS32.dll (both are 64-bit dlls). Replace the 32-bit versions of ACE32.dll on the system (most likely placing them in the System folder).
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=12&Product=25&Platform=9
Edgar is correct, I had to copy the two files from the install and put them into C:\Windows\System32.
I am writing a Windows Service that needs to make a call to an Oracle Database. I have the target environment set for .Net 2.0 and x86 for the compiler. I referenced the Oracle.DataAccess.dll file on my 11.2.0 client for oracle. If i copy it into the GAC, it shows as x86 architecture.
Now, whenever i try to compile the service, I get an "Attempt to load a program with an incorrect format" error. It shows as being in the service's resx file as well as the ServiceInstaller resx file.
This happens regardless of if i target the x86 or x64 platform. Also regardless of setting the DLL to copy local or not. Any idea what is wrong?
ODP.NET is not fully managed, so it calls out to 32 bit unmanaged supporting DLLs (if you installed 32-bit ODAC) or to 64-bit unmanaged supporting DLLs (if you installed 64-bit ODAC).
So first, you need to get the target set correctly, then you need to make sure the right flavor of Oracle DLLs are being picked up.
In this case you chose x86 (32 bit) which means you also need to install 32-bit ODAC AND make sure that you aren't referencing the 64-bit Oracle dlls by mistake.
Christian Shay
Oracle
I'm trying to install the BlackBerry tablet SDK 0.9.0 for Windows but the installer gives the following error:
Win64 not supported.
The author of the package you are installing did not include support for this platform
Is there a way to trick the installer to think I have a 32-bit OS instead of a 64-bit one?
Ok, this works for Windows 7 x64.
Install a java vm for "Windows" (aka the 32bit version from Oracle)
Reboot after install
Unzip the BlackBerryTabletSDK-Air-Installer-0.9.0-Win.exe installer file (I used 7zip)
Navigate to this file:
BlackBerryTabletSDK-Air-Installer-0.9.0-Win\Windows\BlackBerryTabletSDK-Air-Installer-0.9.0.201010221500.lax
Locate this property:
lax.nl.current.vm=
Set it to the location where you installed the 32 bit jvm (for me):
lax.nl.current.vm=C:/Program Files (x86)/Java/jdk1.6.0_22/bin/java.exe
Save the file
Double click the BlackBerryTabletSDK-Air-Installer-0.9.0.201010221500.exe 6.