Как получить доступ к свойству TargetPlatform в условии запуска? - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь получить доступ к значению свойства TargetPlatform (которое можно установить в проекте развертывания) из условия в «Условии запуска».

По сути, я пытаюсь запретить приложению устанавливать себя как 32-разрядное приложение, если на этом компьютере установлена ​​64-разрядная версия Office.Поэтому мне нужно каким-то образом получить разрядность приложения и перевести его в состояние запуска.

Я могу получить разрядность Office из реестра, но я не знаю, как получить доступ к TargetPlatform из установщика.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Вот две ссылки:

Из приведенной выше ссылки вы можете сделать вывод, что вы не можете настроить таргетинг на обе платформы из установщика MSI. Вам нужно будет два установщика. В зависимости от того, как построен установщик, x86 или x64, будет зависеть от того, как установщик интерпретирует некоторые константы, указывающие, где следует устанавливать файлы - Program Files или Program Files (x86) .

Вы не можете изменить TargetPlatform программы установки во время выполнения.

Возможно, вы можете сделать так, чтобы два установщика были упакованы в третий и в зависимости от установленной версии Office вы можете запустить либо вспомогательный установщик x86, либо вспомогательный установщик x64, который фактически установит файлы приложения. .

Если установщик MSI не является обязательным требованием, я бы выбрал NSIS . Если нет, то по крайней мере упакуйте установщики MSI в NSIS. Это невероятно легко. NSIS намного круче MSI, если судить по опыту.

1 голос
/ 19 ноября 2010

Добавьте пользовательское действие до того, как установка начнет выполнять проверку. Используйте класс Installer для выполнения настраиваемого действия. Вы можете использовать событие OnBeforeInstall, чтобы прочитать раздел реестра и проверить битность соответствующим образом. Создание исключения приведет к прерыванию установки, но для этого может быть более чистый способ.

1 голос
/ 12 ноября 2010

Я уже несколько раз читал этот вопрос, и я не уверен на 100%, что понимаю, что вы пытаетесь сделать.У вас есть 32-битное приложение, и вы хотите установить его, только если на нем установлено 32-битное приложение Office (я полагаю, 2010)?У вас также есть 64-битная версия, которую вы хотите установить, если установлен 64-битный офис?

Я не уверен, почему вам нужно заботиться о свойстве TargetPlatform, потому что, если вы знаете, что 64-битный Office установлен, вы должныОпределение будет 64-битной ОС.Если установлен 32-битный Office, вы можете быть 64-битной ОС, но имеет ли это значение?Вы сказали, что заботитесь о разрядности Office, а не Windows.

Из того, что я прочитал, я думаю, что если у вас есть AppSearch, который включает битность в свойство, которое вы могли бы просто использовать в LaunchCondition,использует это свойство вместе с «или установленным» (для обработки возможности удаления приложения, если Office был удален первым) и будет в порядке.

...