By default Inno Setup always installs your application in 32-bit mode. But if your application is compiled to 64-bit binaries (at least, partly) you will, probably, want to use 64-bit mode. First thing you need to do is to specify ArchitecturesInstallIn64BitMode in [Setup] section:
[Setup]
ArchitecturesInstallIn64BitMode=x64
This means that under 64-bit processor architecture 64-bit mode will be used. You can specify Itanium architecture (ArchitecturesInstallIn64BitMode=ia64) if necessary.
Now imagine you need to use one file for 32-bit mode and another file for 64-bit mode. You can do it in the following way:
[Files]
Source: "OurProgram\Release\shellextension.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check: not Is64BitInstallMode;
Source: " OurProgram \x64\Release\shellextension.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check: Is64BitInstallMode;
In the script above we specified to use 32-bit version of shell extension dll in 32-bit mode and 64-bit version of shell extension in 64-bit mode. Other files can be the same for 32-bit and 64-bit modes or different.
Also you can create completely different installers for different architectures. For example, to create installer specially for 64-bit architecture you need to specify:
[Setup]
ArchitecturesAllowed = x64
Other possible values are x86 or ia64. You can specify several values separated by spaces
[Setup]
ArchitecturesInstallIn64BitMode=x64
This means that under 64-bit processor architecture 64-bit mode will be used. You can specify Itanium architecture (ArchitecturesInstallIn64BitMode=ia64) if necessary.
Now imagine you need to use one file for 32-bit mode and another file for 64-bit mode. You can do it in the following way:
[Files]
Source: "OurProgram\Release\shellextension.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check: not Is64BitInstallMode;
Source: " OurProgram \x64\Release\shellextension.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check: Is64BitInstallMode;
In the script above we specified to use 32-bit version of shell extension dll in 32-bit mode and 64-bit version of shell extension in 64-bit mode. Other files can be the same for 32-bit and 64-bit modes or different.
Also you can create completely different installers for different architectures. For example, to create installer specially for 64-bit architecture you need to specify:
[Setup]
ArchitecturesAllowed = x64
Other possible values are x86 or ia64. You can specify several values separated by spaces