Installshield записва в 64-битов регистър

Създавам инсталатор, който автоматично избира кой софтуер да се инсталира въз основа на архитектурата (условие VersionNT64 за едната функция, НЕ VersionNT64 за другата), но има няколко ключа на системния регистър, които също трябва да влязат. Ако включа „64-битов компонент“, той (очевидно) ще пише в съответната част на системния регистър, но това изисква флаг в информацията за инсталатора, който не позволява отварянето му на 32-битова машина. Компонентът дори има условието VersionNT64, така че дори няма да се използва на 32-битова машина, така че има ли друг начин за това? Имам предвид няколко алтернативи (нулиране на флага след компилиране; персонализирано действие върху .reg файл), но бих предпочел нещо по-рационализирано.


person Patrick    schedule 05.01.2012    source източник
comment
Ако разпространявате като .exe файл, предлагаме да използвате проект от пакет (включете по един .msi за всяка архитектура и условие по подходящ начин). Ако обаче разпространявате като .msi файл, това няма да помогне.   -  person Michael Urman    schedule 06.01.2012
comment
По принцип искам потребителят да щракне два пъти върху един файл (за предпочитане MSI, но очевидно ще трябва да е EXE) и инсталаторът да реши кои компоненти да използва и къде да ги постави. Така че въпросът е как да направя това? Не виждам Suite Project в менютата.   -  person Patrick    schedule 09.01.2012
comment
О, разбирам, в Premium е. Изглежда, че ще трябва да направя два собствени проекта и един EXE.   -  person Patrick    schedule 09.01.2012


Отговори (1)


Доколкото знам, можете да използвате компонент, маркиран като 64-битов, в 32-битов пакет, без да попречите на пакета да работи на x86 машини. Само ако типът пакет е зададен на x64, той ще спре да работи на x86 машини.

person Bogdan Mitrache    schedule 06.01.2012
comment
Разбирам, че такива x64 компоненти в x86 пакет няма да бъдат инсталирани на тяхното 64-битово местоположение. Така че, въпреки че няма да попречи на инсталирането, няма да има желания ефект. Поради тази причина InstallShield предотвратява изграждането на тази комбинация. - person Michael Urman; 06.01.2012
comment
Доколкото знам, пренасочването към Program Files (x86) или Wow6432Node се контролира от операционната система въз основа на типа на пакета, а за x86 пакетите всички ресурси са включени в тези местоположения. След малък тест обаче виждам, че за записи в системния регистър, задаване на 64-битов флаг на компонента деактивира пренасочването, - person Bogdan Mitrache; 06.01.2012
comment
Да, видях, че при тестване, въпреки че избра правилната папка Program Files и правилния двоичен набор и показа всичко останало правилно, накрая пак беше пренасочен към (x86). - person Patrick; 09.01.2012