2017-02-01 11 views
0

В настоящее время я пытаюсь расширить нашу программу установки, чтобы пользователь мог указать имя группы программ, в которой ярлыки создаются в меню «Пуск». (Я знаю, что это несколько устаревшее понятие)Как я могу использовать диалог для определения имени группы программ в Installshield 2015

Я использую InstallShield 2015

Я создал локализуемое свойство с именем [PROGRAMGROUP_NAME]. Это автоматически создало {ID_STRING46}, которое я установил для желаемого значения по умолчанию. Все идет нормально. Мне удалось создать пользовательский диалог с элементом управления редактирования, связанным с указанным выше свойством.

Теперь идет сложная часть: в разделе «Ярлыки» в разделе «Меню программ» сначала я хочу добавить папку с именем группы программ, под которой можно разместить несколько ярлыков. Если я введу [PROGRAMGROUP_NAME], это буквально то, что имя будет. Если я использую {ID_STRING46}, он использует значение по умолчанию, а не то, что я ввел в диалоговом окне.

Кстати, когда я пытался переименовать ID_STRING46 в нечто более значимое, другие вещи начали идти не так, поэтому я оставил это как есть.

Что здесь общего не работает? Как получить значение свойства, которое будет использоваться для имени папки?

EDIT

Я пытаюсь использовать пользовательские действия сейчас, но у меня есть проблема определения. Мой диалог, который устанавливает свойство, после CostFinalize, поэтому я предполагаю, что мне нужно использовать SetDirectory, но мне сложно определить его. Я получаю сообщение об ошибке с указанием «не удалось получить доступ к сетевой папке»

EDIT

Я сумел прогрессировать шаг. Я вручную добавил каталог с ключом DIRECTORY_PROGRAM_GROUP (важно, чтобы все его крышки были общедоступны) в таблицу каталогов. Затем я использую настраиваемое действие, чтобы установить этот каталог в желаемое значение [ProgramMenuFolder] [PROGRAM_GROUP_NAME] после запуска моего диалога, и я изменил ярлык, который будет создан в этой папке.

Кажется чтобы работать замечательно, однако, теперь программа группы больше не удаляются при удалении ...

ответ

0

Ярлыки устанавливаются в папки, а также имя папки ниже ProgramMenuFolder стала программа группы, как вы описали его , Поэтому вам нужно либо создать Directory table (либо прямо --- обратите внимание, что столбец DefaultDir локализуется, и может быть уже строка, которую вы можете обновить, или через представление «Файлы и папки»), чтобы сделать то, что вы хотите , или использовать пользовательские действия (установить свойство, если перед калькуляцией, установить каталог, если после калькуляции) настроить местоположение, в котором установлен ярлык.

Что касается проблем с переименованием ID_STRING46, то вы не обновили ссылку после того, как вы изменили имя строки. Самый простой способ отслеживать, где это возможно, - это изучить различия в встроенном инсталляторе (возможно, используя MSI Diff от InstallShield), а затем обновить соответствующие ссылки с помощью прямого редактора, если вы не можете найти их в обычных представлениях.

+0

Создание таблицы каталогов напрямую не работает; если я использую свойство [PROGRAMGROUP_NAME] в столбце DefaultDir таблицы Directory, я получаю группу программ с именем [PROGRAMGROUP_NAME] (буквально). Я пытаюсь использовать пользовательское действие сейчас, но у меня проблемы с его определением. Мой диалог, который устанавливает свойство, после CostFinalize, поэтому я предполагаю, что мне нужно использовать SetDirectory, но мне сложно определить его.Если я использую – MHJF