Я вижу следующие сообщения во время обновления с помощью установщика, созданного с помощью InstallShield 2012 Spring:
- Мастер InstallShield обновит установленную версию (9.01.005) «нашего продукта» до версии 9.2.0.53.
- Мастер InstallShield обновляет (9.01.005) «нашего продукта» до версии 9.2.0.53.
Эти сообщения основаны на строковых ресурсах IDS_IFX_SDWELCOMMESSAGE_UPDATE_WELCOME
и IDS_IFX_STATUSEX_STATICTEXT_UPDATEUI
. Я считаю, что неизмененные строковые ресурсы будут выглядеть так:
- Мастер InstallShield обновит установленную версию (%VI) %P до версии %VS. Чтобы продолжить, нажмите Далее.
- Мастер InstallShield обновляет (%VI) %P до версии %VS.
хотя некоторые ресурсы указывают, что второй строковый ресурс — «Мастер InstallShield обновил %VI из %P до версии %VS».
Проблема в том, что старый (установленный) номер версии должен быть отображаемой строкой, такой как «9.1.5.2», а не отформатированной версией внутреннего номера версии, например «9.01.005». Насколько я понимаю, SdSubstituteProductInfo
использует IFX_INSTALLED_DISPLAY_VERSION
для заполнения замены %VI
в коде InstallScript по умолчанию для OnUpdateUIBefore
. И IFX_INSTALLED_DISPLAY_VERSION
по умолчанию вместо IFX_INSTALLED_VERSION
, что объясняет, почему предпочтительная отображаемая строка не появляется там, где мы хотели бы. И я предполагаю, что SdWelcome
(или любое диалоговое окно или код, аналогично ссылающийся на IFX_INSTALLED_DISPLAY_VERSION
), также отображает плохо отформатированную версию.
Несмотря на все мои поиски в Интернете функций, строк и идентификаторов строк, упомянутых выше, я не нашел идеального решения для отображения правильно отформатированного номера старой версии (DisplayVersion) в правильном формате. В некоторых статьях предлагается жестко кодировать строку формата, которая пропускает старый номер версии, вместо использования строкового ресурса, включающего %VI
. Другие предлагают вручную отформатировать номер версии по желанию и поместить результат в IFX_INSTALLED_DISPLAY_VERSION
. Я знаю, что есть лучший ответ, и я хочу, чтобы его было легче найти в следующий раз, когда я или кто-либо другой будет его искать.