Передать свойство в ISCmdBld.exe

Я использую ISCmdBld.exe для сборки моих установщиков на удаленной машине, и мне нужно указать разные пути к INSTALLDIR. Мне нужно сделать что-то вроде: -z INSTALLDIR="[ProgramFiles64Folder]\MyNewDir" и для 32-битной -z INSTALLDIR="[ProgramFilesFolder]\MyNewDir". В настоящее время, если я пытаюсь это сделать, он не работает, потому что он будет пытаться просто передать в буквальную строку, а не разрешать свойство в скобках. Я пробовал это с / без кавычек безрезультатно.

Можем ли мы ссылаться на установочные щиты, встроенные в каталоги?

1 ответ

Решение

Вы не можете решить это таким образом. Как вы видели, передача -z INSTALLDIR="[ParentFolder]Subdir" в ISCmdBld приводит к тому, что INSTALLDIR имеет это буквальное значение. Почему это не работает? Короче говоря, потому что это не так, как работает установщик Windows.

Чтобы понять, что вам нужно сделать, сначала создайте MSI с вашей 32-битной родительской папкой, а затем с 64-битной родительской папкой и используйте инструмент сравнения (например, InstallShield MSI Diff), чтобы увидеть, как они отличаются. (Или действительно, вы можете сделать это на копиях ISM, так как эта часть там одинаково изменяется.) Вы должны увидеть, что в таблице Directory изменилась родительская структура каталога для записи INSTALLDIR. Обратитесь, например, к серии Расшифровка таблицы справочника Msi Роба Меншинга, если вы не понимаете различий, которые видите.

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

  • Используйте некоторую автоматизацию (возможно , свойство INSTALLDIR ISWiProject в интерфейсе автоматизации InstallShield), чтобы изменить структуру каталогов перед сборкой проекта.
  • Используйте пользовательские действия set-directory для изменения INSTALLDIR во время выполнения

    Примечание. Два таких пользовательских действия могут выбирать между двумя альтернативными расположениями во время выполнения, ссылаясь в их условиях на то, что вы задали в другом месте (например, свойство через ISCmdBld).

Другие вопросы по тегам