Если ОС 64 бит, я хочу установить 32-разрядную DLL в папку Program Files (x86)
и 64-битную DLL в папку Program Files
и зарегистрировать их соответственно. Если это 32-разрядная ОС, я просто хочу скопировать файл в обычную папку программы и зарегистрироваться.Inno Setup 32bit и 64bit dll installation
Как это сделать в Inno Setup? Также будет ли 64-битная DLL зарегистрирована в 64-битной программе regsvr32
?
Вот мой код. Он отлично работает на 32-битной ОС, но на 64-битной ОС он выгружает оба набора файлов в Program Files (x86)
.
[Files]
Source: D:\..\32bit files\mylibrary.dll; DestDir: {app}; \
Flags: restartreplace ignoreversion regserver 32bit
Source: D:\..\64bit files\mylibrary.dll; DestDir: {app}; \
Flags: restartreplace ignoreversion regserver 64bit; Check: IsWin64
Я посмотрел на 64BitTwoArch.iss
пример, но что говорит, как сделать 32bit или 64bit установить не 32bit и 64bit установки.
Если вы хотите, чтобы оба файла были установлены на 64-битной Windows, а папка назначения была различной для каждого, вы не можете использовать тот же «DestDir» для обоих. Существует не «хорошее» решение для их установки в разных папках, потому что на самом деле это не то, что вы должны делать (и вы не можете гарантировать, что {app} находится под {pf} в любом случае). Лучшее решение - либо установить только один файл, соответствующий ОС, либо установить их в одной папке с разными именами файлов. – Miral
Я второй, что @Miral говорит. Вы можете сделать это, используя кучу уродливых строковых операций в {app}, но нет гарантии, что пользователь установит его в {pf} в первую очередь. – Nyerguds