Если вы используете один установщик для 64-разрядной и 32-разрядной версий, тогда вы должны использовать директиву ArchitecturesInstallIn64BitMode
. Это изменит {pf} и другие скриптовые константы на их 64-битную версию при установке в 64-битной системе и их 32-разрядные версии при установке в 32-разрядной системе.
Вы, очевидно, также захотите использовать «Проверка как в примере Мартина», чтобы убедиться, что вы устанавливаете только правильные двоичные файлы.
Ex:
#define MyAppName "MyAwesomeApp"
[Setup]
ArchitecturesInstallIn64BitMode=x64
AppName={#MyAppName}
DefaultDirname={pf}\{#MyAppName}
[Files]
Source: "MyApp_32bit.exe"; DestDir: "{app}"; Check not Is64BitinstallMode;
Source: "MyApp_64bit.exe"; DestDir: "{app}"; Check Is64BitinstallMode;
'{пф}' расширяется в каталог родных программных файлов (* C: \ Program Files * по умолчанию), если вы работаете с 32-битной версией программы установки на 64-битном ОПЕРАЦИОННЫЕ СИСТЕМЫ. Для 32-разрядного установщика вы можете использовать '{pf64}' (что вызывает исключение в 32-разрядной ОС), но, вероятно, проще создать 64-разрядный установщик. – IInspectable
И как я могу это достичь? Это потому, что мне нужны файлы, которые нужно установить в каталоге C: \ Program Files, но он также должен использоваться для 32-битных и 64-битных ... –
Если вы хотите, чтобы ваша программа была установлена в * C: \ Program Files * на 64 -битной версии Windows, вероятно, вы должны создать 64-разрядный установщик и использовать '{pf}', как и в своем 32-разрядном установщике. Теперь вам нужно только убедиться, что ваш 32-разрядный установщик не запускается в 64-разрядной версии Windows. – IInspectable