Можно ли локализовать отображаемое имя "Программы и компоненты" установленного приложения?
Может ли установленное приложение Windows локализовать отображаемое имя?
Если да, я предполагаю, что это меняет то, что хранится в DisplayName
ключ реестра для этого приложения. Я спрашиваю, потому что мне интересно, как бы вы запросили потенциально локализованное имя, если вы пытаетесь получить UninstallString
,
Будет ли установщик иметь запрашиваемый список возможных отображаемых имен или любой другой уникальный идентификатор для данного приложения?
1 ответ
Не зная, что вы пытаетесь сделать, не понятно, как на это ответить. Установки на основе MSI, как правило, локализуются с помощью базовой установки (скажем, на английском языке), а затем вы создаете преобразование с помощью редактора MSI (например, Orca). Вы можете изменить ProductName и все в пользовательском интерфейсе. С этим преобразованием (файл.mst) вы устанавливаете с командной строкой, которая включает TRANSFORMS=[путь к файлу mst], и вы видите локализованный пользовательский интерфейс, ProductName и т. Д.
Если вы хотите знать ProductName (или что-либо еще об установленном продукте), вы должны сделать MsiGetProductInfo или аналогичный:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370130(v=vs.85).aspx
и спросите имя, версию, установленный язык или что-то еще). Существует API-интерфейс MsiEnumProducts, который перечисляет продукты, установленные MSI.
Никто не использует UninstallString для удаления MSI (если вы удаляете или изменяете его, он все еще удаляется). Вы просто звоните MsiConfigureProduct:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370070(v=vs.85).aspx
и сделать это отсутствующим.
Некоторые установки не используют MSI для установки - в таких случаях строка удаления может быть полезна для чего-либо. То, как они выполняют локализацию, зависит от инструмента, используемого для создания установки - иногда они имеют строковые ресурсы в файлах.
Сказав все это, во многих случаях ProductName никогда не локализуется, потому что это узнаваемый бренд и название компании. Я подозреваю, что (используя ваш пример) Flash Player всегда можно назвать Flash Player, потому что перевод на (скажем) на французский не имеет смысла, и английский язык узнаваем во всем мире под этим именем.