Решение проблем с установщиком MSI - PullRequest
0 голосов
/ 30 января 2020

Я - новый разработчик InstallShield, и мне пришлось конвертировать одно из настольных приложений моей компании в многоязычный установщик. У меня в основном это работает так, как мы хотели, с установщиком, определяющим язык ОС и отображающим диалоговые окна с соответствующей локалью. Это проект MSI InstallScript, и мне пришлось отключить некоторые жестко запрограммированные строки из сценария с помощью ID_string, а затем добавить эту строку (и ее переводы) в базу данных с помощью редактора, что сработало как чудо.

Последний вопрос, который мне нужно решить, - как запустить приложение на соответствующем языке. Приложение имеет функцию для изменения языкового стандарта пользовательского интерфейса, но оно находится в области «настроек», и пользователь должен будет перейти туда, чтобы изменить его после запуска приложения. В приложении нет функции для определения ОС и открытия с этим языком. Я хотел бы не просить разработчика добавить это. В установленных файлах приложения есть файл XML, который я могу отредактировать вручную и принудительно запустить приложение в этой локали. Я смотрел на использование инструмента "XML file changes", но у меня возникли трудности. Я также попытался добавить новые компоненты для каждого языка, чтобы установить новый файл xml во время установки, но у меня было много ошибок, связанных с невозможностью сжать файлы, и некоторых других ошибок.

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

Заранее благодарю за любую помощь!

Кевин

1 Ответ

0 голосов
/ 29 апреля 2020

Извините за задержку с возвращением, чтобы объяснить, как я решил свою проблему. Основная проблема заключалась в том, что мне нужно было определить язык ОС, а затем использовать его, чтобы программа установки установила соответствующий файл xml, который сообщал приложению, какой язык отображать при запуске.

Я создал дополнительные компоненты для каждого нового добавленного языка. В каждом новом компоненте я сделал его установку условно (простая настройка в области меню компонента справа) по языку. Я поставил условие, что когда код ProductLanguage совпадает с кодом для этого компонента, он копирует файл xml с соответствующим узлом локали в каталог целевой машины. Когда приложение запускается, оно запускается на языке, который соответствует коду ProductLanguage.

Кажется, работает правильно. Я просто скопировал исходный компонент, который поместил файл Engli sh XML в targettdir, и сделал его для каждой локали, добавленной в установщик, и установил новые компоненты для установки по условию.

Спасибо всем, кто пытается помочь. Я думаю, что иногда нужно обобщить проблему в процессе обращения за помощью, чтобы на самом деле увидеть общую картину.

...