Installshield - Merge Module - Динамический целевой каталог, основанный на вводе диалогового окна пользователя - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь установить переопределение целевого каталога модуля слияния, как описано здесь.Я установил каталог назначения на [BIN].БИН является государственной собственностью.Во время компиляции значение [BIN] равно C: \ Program Files (x86) \ CompanyName \ ProductName.

В зависимости от пользовательского ввода в пользовательском диалоговом окне это свойство обновляется до C: \ Program Files (x86) \ НазваниеКомпании \ UserInputName \ ProductName.

Все файлы DLL из модуля слияния копируются в значение времени компиляции [BIN] - C: \ Program Files (x86) \ CompanyName \ ProductName.По какой-то причине динамическое значение в этом случае игнорируется.

Может кто-нибудь сказать мне, что может быть не так?

Я использую Install Shield версии 2010 Professional Edition, тип проекта - Basic MSIПроект

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

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

В качестве обходного пути рекомендуется использовать настраиваемое действие «Установить каталог».

Вот шаги:

  1. В представлении «Вторично распространяемый» щелкните правой кнопкой мыши файл MSM -> Свойства -> Назначение -> установить [MSM_DEST_STATIC_DIR].
  2. Создайте пользовательское действие типа 'Set Directory' с именем каталога - MSM_DEST_STATIC_DIR, значение каталога - [MSD_DEST_DIR_DYNAMIC_VALUE]
  3. После получения пользовательского ввода из диалогового окна сначала обновите MSD_DEST_DIR_DYNAMIC_VALUE, затем выполните настраиваемое действие, созданное на шаге 2.

При этом я также понял, что невозможно обновить IISROOTFOLDER на основе динамического пользовательского ввода. Я выполнил ту же процедуру с пользовательским действием для обновления IISROOTFOLDER.

0 голосов
/ 11 апреля 2019

Модули слияния добавляют GUID к каждому первичному ключу , чтобы предотвратить конфликты слияния. Таким образом, идентификатор BIN фактически превращается в BIN.G_U_I_D при использовании в модуле слияния.

Чтобы решить эту проблему, модули слияния предназначены для «переадресации» .

...