Как мне скопировать / установить только один из двух наборов файлов в зависимости от выбора пользователя в Installshield?

Я использую Installshield 2014 Premier Edition. Я создаю установщик для своего настольного приложения.

Требование к установщику: следует использовать только один установщик, который может найти JRE, присутствующий в системе (32- или 64-разрядный), и в зависимости от этого выбирает файлы для установки на целевой машине.

Способы, которые я пробовал, но не сработал

1. Я создал определяемое пользователем свойство или переменную, которую можно выбрать / изменить в диалогах для 32- / 64-битной версии. И дал это свойство в состоянии в компонентах или функциях. В зависимости от условия файлы следует копировать. Но в конце концов я обнаружил, что условие, которое я дал в компонентах или функциях, проверяется до появления первого диалога. Это означает, что свойство, которое я проверял, оценивается до появления окна приветствия установки. Так что ни один из моих 32-битных или 64-битных файлов не копируется. только общие файлы (или компоненты / функции) ни при каких условиях не копируются в целевую систему. Вопрос: Есть ли способ отложить этап, на котором выполняется первоначальная оценка свойства, или я могу повторно инициировать его после появления диалогового окна?

Этот способ не работает. Поэтому я попробовал другой метод.

2. Я использовал вариант «файлы поддержки». Но это тоже не сработало. Потому что мои 32-битные и 64-битные файлы имеют одно и то же имя. Если я помещаю файл с таким же именем, он копирует файл, который я вставляю последним, и копирует его в папку «TempFolder» целевой системы. А installshield не имеет возможности создать папку в файле поддержки. Если я смогу это сделать, мою проблему можно будет решить. Вопрос: Есть ли способ скопировать файлы с помощью сценария из упакованного установщика на целевую машину? Как мне разместить этот файл? пожалуйста, объясни.

Пожалуйста, помогите мне найти решение для этого. Если у кого-то есть другие решения, мы тоже приветствуем их.


person sanket    schedule 20.01.2016    source источник


Ответы (2)


Мне немного неясно, хотите ли вы:

  • Установите 32-разрядную или 64-разрядную JRE в зависимости от целевой машины, а затем установите свое приложение или
  • Определите 32-битную или 64-битную JRE (или обе), а затем установите 32-битный или 64-битный вариант вашего приложения.

Для первого я бы предложил создать и использовать предварительные требования InstallShield. Вы можете подготовить их к платформе целевой машины, чтобы установить только один.

Для последнего я бы предложил использовать проект Suite / Advanced UI, который включает пакеты (возможно, пакеты MSI) для каждой из ваших 32-битных и 64-битных сборок. Если вы уверены, что будет присутствовать хотя бы одна JRE и что это не изменится, вы можете использовать условия допуска, которые обнаруживают наличие соответствующей JRE, чтобы включить или отключить каждый пакет. Если вместо этого вам может потребоваться доставить JRE или нужно разрешить его изменение, вам, вероятно, следует разделить свой набор на отдельные функции и настроить условия функций, чтобы выбрать, какие из них будут установлены по умолчанию, возможно, даже позволяя пользователю выбирать, какие версия для установки.

person Michael Urman    schedule 20.01.2016
comment
Я не хочу устанавливать 32-битную или 64-битную JRE. да .. Я уверен, что будет присутствовать хотя бы одна JRE. Но как я могу использовать условие соответствия, которое обнаруживает наличие 32-битной или 64-битной JRE? и как его включить или отключить? Я использовал для этого только проект Basic MSI. - person sanket; 01.02.2016

для этого лучше всего использовать systemSearh для установки вашего свойства condition.

в конструкторе installshield его поведение и логика.

Щелкните правой кнопкой мыши и выберите «добавить ...» в последнем диалоговом окне, вы найдете флажок «сохранить значение в свойстве и использовать свойство в условиях установки».

person Meliart    schedule 21.01.2016
comment
да ... Я использовал это. Я искал, присутствует JRE или нет. Но мне не известно, установлена ​​ли на машине 32-битная JRE или 64-битная JRE. И мне это нужно, потому что одна из возможностей состоит в том, что на 64-битной машине может присутствовать только 32-битная JRE. Есть ли способ узнать, является ли JRE 32-битной или 64-битной через системный поиск? - person sanket; 01.02.2016