Как получить доступ к свойству TargetPlatform в условии запуска?

StackOverflow https://stackoverflow.com/questions/4143446

Вопрос

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

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

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

Спасибо!

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top