MSI: Как в runtime узнать, выбрал ли пользователь Feature?
От: Ignoramus  
Дата: 18.11.04 11:02
Оценка:
Подскажите, плз.

Мне понадобилось анализировать, что решил пользователь по отношению к той или иной фиче — устанавливать или не устанавливать. В зависимости от этого я хочу предпринять те или иные действия.

Вопрос — как узнать, какое состояние указал пользователь для фичи по ее идентификатору? Среди Properties не нашел...

Заранее спасибо.
Re: MSI: Как в runtime узнать, выбрал ли пользователь Featur
От: Alny Украина  
Дата: 18.11.04 15:21
Оценка:
Ну, для начала — каким средством создания инсталяции Вы пользуетесь?

I>Подскажите, плз.


I>Мне понадобилось анализировать, что решил пользователь по отношению к той или иной фиче — устанавливать или не устанавливать. В зависимости от этого я хочу предпринять те или иные действия.


I>Вопрос — как узнать, какое состояние указал пользователь для фичи по ее идентификатору? Среди Properties не нашел...


I>Заранее спасибо.
Re[2]: MSI: Как в runtime узнать, выбрал ли пользователь Fea
От: Ignoramus  
Дата: 18.11.04 15:49
Оценка:
Здравствуйте, Alny, Вы писали:

A>Ну, для начала — каким средством создания инсталяции Вы пользуетесь?


ORCA
(forever )

Хотя это не принципиально, я хочу узнать на уровне самого MSI.
Re: MSI: Как в runtime узнать, выбрал ли пользователь Featur
От: 3tone Беларусь http://333tone.livejournal.com/
Дата: 19.11.04 13:16
Оценка:
Здравствуйте, Ignoramus, Вы писали:

I>Подскажите, плз.


I>Мне понадобилось анализировать, что решил пользователь по отношению к той или иной фиче — устанавливать или не устанавливать. В зависимости от этого я хочу предпринять те или иные действия.


I>Вопрос — как узнать, какое состояние указал пользователь для фичи по ее идентификатору? Среди Properties не нашел...


I>Заранее спасибо.


может MsiGetFeatureState поможет.
Re[2]: MSI: Как в runtime узнать, выбрал ли пользователь Fea
От: Ignoramus  
Дата: 19.11.04 14:35
Оценка:
Здравствуйте, 3tone, Вы писали:

3>может MsiGetFeatureState поможет.


О! Это уже близко. Но при этом нужно писать внешнюю по отношению к базе MSI программу (custom action). А есть какой-нибудь эквивалент внутри самой базы? Типа standard action или property?

Кстати, по соседству заметил MsiGetFeatureCost. Меня это тоже интересует, аналогичным образом.
Re[3]: MSI: Как в runtime узнать, выбрал ли пользователь Fea
От: Sergei I. Gorelkin Россия  
Дата: 20.11.04 10:14
Оценка: 6 (1)
Здравствуйте, Ignoramus, Вы писали:

I>О! Это уже близко. Но при этом нужно писать внешнюю по отношению к базе MSI программу (custom action). А есть какой-нибудь эквивалент внутри самой базы? Типа standard action или property?


I>Кстати, по соседству заметил MsiGetFeatureCost. Меня это тоже интересует, аналогичным образом.


В самой базе можно употреблять выражения вида !feature-state, ?component-state, &feature-action, $component-action
(т.е. имена фич и компонентов с префиксами). Они действительны после выполнения CostFinalize. Первые два возвращают целое число (INSTALLSTATE_xxx), вторые два, судя по всему, строку типа "ADDLOCAL"

Подробнее здесь
Re[4]: MSI: Как в runtime узнать, выбрал ли пользователь Fea
От: Ignoramus  
Дата: 24.11.04 09:54
Оценка:
Здравствуйте, Sergei I. Gorelkin, Вы писали:

SIG>В самой базе можно употреблять выражения вида !feature-state, ?component-state, &feature-action, $component-action

SIG>(т.е. имена фич и компонентов с префиксами). Они действительны после выполнения CostFinalize. Первые два возвращают целое число (INSTALLSTATE_xxx), вторые два, судя по всему, строку типа "ADDLOCAL"

Спасибо! Это именно то, что нужно.

Еще хотелось бы подобным образом узнать суммарный размер всех файлов на диске. В MSI для этого предусмотрен специальный контрол, который отображает размер каждой фичи. У меня есть parent-feature которая включает в себя все остальные фичи, так что если я получу размер этой parent-feature, то задача была бы решена. Но я не хочу использовать специальный контрол.

Есть ли способ узнать размер фичи, подобным образом, как ее состояние (!feature-state)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.