Многоязычное приложение с поддержкой Installshield

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

Я также должен предоставить пользователю возможность устанавливать и удалять языковой пакет. Предложите мне лучший способ сделать это через installshield 2011.


person Vinay MS    schedule 13.03.2012    source источник


Ответы (1)


Я бы сделал это так.

Конечно ваше приложение сохраняет папку установки в реестре при установке. Затем ваш языковой пакет ищет эту запись реестра.

  • Если место установки не сохранено в реестре, ваше приложение не установлено: сообщите об ошибке и выйдите.
  • В противном случае вы знаете, куда скопировать языковые файлы, поэтому приступайте к установке языкового пакета.

У вашего языкового пакета будет отдельная запись в разделе "Установка и удаление программ".
Если вам это не нужно, есть два других варианта:

  1. Зарегистрируйте языковой пакет как обновление вашего приложения. Затем он будет отображаться только тогда, когда пользователь решит просмотреть установленные обновления.
    Как это сделать, описано в Фильтрация списка "Установка и удаление программ".
  2. Скройте свой пакет из «Установки и удаления программ». В этом случае вы должны указать другой способ удаления пакета.

Есть еще одна вещь: деинсталлятор для вашего основного приложения должен (может) предоставлять опции для удаления всех установленных языковых пакетов. Вы же не хотите, чтобы пользователи удаляли их вручную, верно?

Это сложно. Самый простой подход, который приходит мне на ум, заключается в том, что ваш основной деинсталлятор перечисляет установленные языковые пакеты и планирует их удаление. Тем не менее, это может быть неудобным для UAC.

Подходы к реализации удаления языковых пакетов зависят от того, как эти пакеты создаются. Если у вашего деинсталлятора есть загрузчик, .exe, а не голый .msi, то это может быть довольно просто. Загрузчик инициирует процесс удаления основного приложения. В случае успеха он переходит к удалению языковых пакетов. И это было бы удобно для UAC: загрузчик запрашивает повышение прав при запуске, поэтому все процессы, которые он запускает, также будут повышены.

person Alexey Ivanov    schedule 14.03.2012
comment
Спасибо Алексей.. Даже я думал о том же подходе. Не могли бы вы уточнить, как зарегистрировать языковой пакет в качестве обновления для моего приложения? Даже мой основной установщик должен удалить все установленные языковые пакеты... это тоже одно из требований. Скажите мне, как это сделать - person Vinay MS; 14.03.2012
comment
Привет, мне нужна дополнительная помощь, я создал отдельный exe только с языками в качестве компонента. Я нашел место установки из реестра и установил его с помощью настраиваемого действия. Но я не смог зарегистрировать это как обновление для моей более ранней установки. Помогите мне, как я могу установить имя родительского ключа для моего отдельного исполняемого файла. - person Vinay MS; 28.03.2012
comment
@VinayMS Следовали ли вы инструкциям, приведенным в разделе Фильтрация добавления или удаления Список программ? - person Alexey Ivanov; 29.03.2012
comment
Вы можете выбрать любую клавишу, единственное, о чем нужно помнить, это не конфликтовать с другими приложениями, поэтому сделайте ее достаточно конкретной. Используйте элемент RegistryKey для добавления ключей, «Как сделать запись в реестре во время установки» должен вам помочь. При удалении языкового пакета не следует удалять ключ, только значения, относящиеся к данному пакету; используйте RemoveRegistryValue. - person Alexey Ivanov; 29.03.2012