2016-07-18 6 views
3

Константа {пф} является каталогInno Setup: "Program Files" каталог на обоих 32bit/64bit систем с {пФ}

C: \ Program Files

для 32bit системы и

C: \ Program Files (x86)

для 64-битных синте стебли.

Однако я хочу, чтобы использовать каталог

C: \ Program Files

для обоих, 32 и 64-битных систем. Как я могу это достичь?

+0

'{пф}' расширяется в каталог родных программных файлов (* C: \ Program Files * по умолчанию), если вы работаете с 32-битной версией программы установки на 64-битном ОПЕРАЦИОННЫЕ СИСТЕМЫ. Для 32-разрядного установщика вы можете использовать '{pf64}' (что вызывает исключение в 32-разрядной ОС), но, вероятно, проще создать 64-разрядный установщик. – IInspectable

+0

И как я могу это достичь? Это потому, что мне нужны файлы, которые нужно установить в каталоге C: \ Program Files, но он также должен использоваться для 32-битных и 64-битных ... –

+0

Если вы хотите, чтобы ваша программа была установлена ​​в * C: \ Program Files * на 64 -битной версии Windows, вероятно, вы должны создать 64-разрядный установщик и использовать '{pf}', как и в своем 32-разрядном установщике. Теперь вам нужно только убедиться, что ваш 32-разрядный установщик не запускается в 64-разрядной версии Windows. – IInspectable

ответ

2

Используйте scripted constant как:

[Setup] 
DefaultDirName={code:GetProgramFiles}\My Program 

[Code] 

function GetProgramFiles(Param: string): string; 
begin 
    if IsWin64 then Result := ExpandConstant('{pf64}') 
    else Result := ExpandConstant('{pf32}') 
end; 

Хотя этот подход должен быть использован только, если вы генерировать двоичные файлы для соответствующей платформы на лету. Как и в вашем случае, если вы правильно понимаете, вы компилируете двоичные файлы Java для соответствующей архитектуры.


Если у вас есть отдельные 32-разрядные и 64-разрядные двоичные файлы в программе установки, используйте сценарий, как:

[Files] 
Source: "MyDll32.dll"; DestDir: "{pf32}\My Program"; Check: not IsWin64 
Source: "MyDll64.dll"; DestDir: "{pf64}\My Program"; Check: IsWin64 

Смотрите также:

1

Если вы используете один установщик для 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^