Porting to 64bit
Updated: 29 May 2010 | 9 comments
Hi,
We are having a 32bit installer and we used to install in 64bit machines with the same 32bit installer. Now we want to have a 64bit installer.
For changing to 64bit installer, can i go and change the settings in 'Setup Editor > Product Tab > Summary Icon '. Under that Template Summary property to x64;1033, to change the installer to 64bit.
One more question is, Should i need to have two different projects for 32bit and 64bit? Or is it possible to have one project and by changing the settings, can we generate both 32bit and 64bit installer?
Thanks for the Help,
Panneer.
discussion Filed Under:
Comments
Presumably the filesets are
Presumably the filesets are different - ie the 32 bit project has 32 bit files, and the 64 bit project has 64 bit files, so handling this with a single project is not practical.
When you start a new project, you get presented with a drop down menu where you select either a 32 bit or 64 bit project. This setting controls whether the component attributes are set to indicate that the component is 64 bit. Consequently, just changing the summary page property to 64 bit is not going to make your project file 64 bit, as you will need to change all the component properties and of course substitute the 64 bit files for the previous 32 bit.
So for your own sanity, having separate projects for 32 bit and 64 bit is the best way to go.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Thanks for the reply. I'll go
Thanks for the reply. I'll go with two different projects for 32 bit and 64 bit. But one more question is, Should i need to create a new project from scratch for 64bit?
If i edit in the current 32bit project's Summary page property to 64bit and change the Source paths for all components to pick from 64bit path, is that change is enough?
Or Should i need to make more changes (ie any changes are required in Custom actions etc... )? Because creating one more project from scratch will be more time consuming.
Please advice.
Thanks for the Help,
Panneer.
You will need to edit every
You will need to edit every component to set the attribute value that indicates the component is 64 bit.
Frankly, creating a package from scratch carries less risks of missing something than trying to edit your existing project.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Thanks for the reply. I have
Thanks for the reply. I have one more question.
Hereafter we will be having two installers, one for 32bit and the other for 64bit. Still now we used to install in 64bit machines as 32bit installer which we had already.
Suppose if the user have installed version 5 of our product (which has only 32bit) in some 64bit machine. Now if the user wants to install version 6 of our product which has the installer specific to 64bit in the same machine. The requirement is to uninstall the old version and install the new 64bit version of the product.
In order to get that done, should i use some wrapper to uninstall the existing product if found or Can i do it from Wise Installer itself?
The old version would have copied all the binaries under Program Files (x86) folder and the new installer should copy to Program Files folder.
Thanks for the Help,
Panneer.
Interesting question
I have not tried creating a 64 bit upgrade to a 32 bit applications yet.
However, were I to do so, the first thing I would try would be to create the 64 bit MSI, then specify the previous 32 bit MSI as a version to upgrade, making sure that the RemoveExistingProducts custom action is re-sequenced so that it is located between InstallValidate and InstallInitialize. In this position, the custom action ensures that the previous version is removed completely before the new version is installed.
The one point I would suggest you also consider carefully, is whether there are any services involved, or any files that are "in use" when you come to run the upgrade, as this scenario normally requires a reboot to get rid of locked files which need deleting. Accordingly, if you have any such files or services, it will be necessary to include actions to stop services and ensure that all files are unlocked prior to the uninstall.
If this approach does not work, then I would be looking to create a wisescript wrapper which would handle the uninstall of the 32 bit application and follow with the install of the 64 bit application. My only concern here would be whether the 32 bit wisescript process could successfully kick off msiexec to run in 64 bit mode.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Thanks for the suggestion. I
Thanks for the suggestion. I tried with the wise wrapper script and it is successfully launching the msiexec in 64 bit mode.
I have one more question.
I know Wise Script Editor doesn't support 64bit. But we have some wise scripts which reads to registry to get some value. Is there a way i can pass those values to that exe (which is compiled from .wse file) as command line so that it can use it in script?
Thanks for the Help,
Panneer.
Sure
When you execute a wisescript EXE, any command line attributes you pass to the EXE are automatically loaded into the %CMDLINE% variable, which you can parse in your EXE as required.
The only thing to beware of, is that predefined command line options (such as /s /m /x etc) are stripped out before the remainder are passed to the %CMDLINE% variable.
You will find information about %CMDLINE% and other predefined variables in the Wisescript Editor documentation.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
I tried passing [INSTALLDIR]
I tried passing [INSTALLDIR] to the wise script exe and if i try to get the value from script editor, it is not substituting the value to that property i.e i'm getting the value [INSTALLDIR] itself in %CMDLINE%. How can i get the value of that property in script editor? Is it i need to pass someother stuffs with it?
Thanks for the Help,
Panneer.
You cannot do this
You cannot pass property values as command line arguments to the wisescript, as the command line arguments are treated as TEXT only.
Can I point you in the direction of the Wisescript command "Get Windows Installer property" ??
That is what you need to use if you want to read a property value into a Wisescript variable.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Would you like to reply?
Login or Register to post your comment.