Свойства данных установщика MSI

Я играю с установкой MSI для большого проекта, над которым я работаю, и мне интересно узнать больше об этих свойствах, которые я вижу вокруг.

Это такие вещи, как [TARGETDIR] или что-то еще, заключенное в "[PROPERTNAMEHERE]". Я пытаюсь узнать, есть ли их список где-нибудь?

Кстати, есть ли способ получить доступ ко всем этим свойствам из настраиваемого действия. Я просмотрел коллекцию Context.Parameters, но ничего там не увидел. Я передал / name = "[TARGETDIR] \" как CustomActionData в настраиваемое действие, но этого недостаточно.

Спасибо

Стив


person Steven Yates    schedule 19.02.2013    source источник
comment
Какую технологию вы используете для сборки своего MSI-файла?   -  person Damien_The_Unbeliever    schedule 19.02.2013


Ответы (3)


Свойства: очень важно понимать при работе с пакетами на основе MSI. Прежде всего вы должны знать, что существует два типа свойств: общедоступные свойства и частные свойства. При работе с настраиваемыми действиями вы всегда должны использовать общедоступные свойства, чтобы избежать сброса их значений при переходе процесса установки от InstallUI Sequence к InstallExecute Sequence.

Кроме того, очень важно, пользовательское действие не может получать / устанавливать свойства при выполнении отложенного выполнения. Только немедленный, т.е. неотложный, пользовательские действия могут получить / установить значение свойства.

Есть одно исключение: при выполнении отложенного настраиваемого действия вы можете получить значение из специального свойства под названием "CustomActionData".

Теперь, что касается настраиваемых действий, вы можете написать настраиваемые действия C ++, C # или VBScript для получения / установки свойств во время установки.

VBScript не рекомендуется для официального выпуска приложения, но вы можете использовать его для чего-то быстрого, что вам нужно использовать внутри компании.

Для настраиваемых действий C ++ вы получите DLL, из которой вы можете экспортировать один или несколько методов, которые будут вызываться при запуске вашего настраиваемого действия. Обратите внимание, что сигнатура функции отличается от стандартной библиотеки DLL, внимательно проанализируйте связанный пример.

Вы также можете получить аналогичную DLL, написав код C # , если так удобнее.

Очень важно убедиться, что вы не пытаетесь запускать стандартную DLL как настраиваемое действие, некоторые коммерческие / бесплатные инструменты разработки настроек поддерживают и это, но не все. Если вы планируете написать настраиваемое действие DLL, лучше сделать это с самого начала, используя один из двух примеров (C ++ / C #), указанных выше.

person Bogdan Mitrache    schedule 20.02.2013

Через несколько секунд после того, как я разместил это, я нашел то, что искал в отношении списка свойств: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx

Теперь мне нужен способ получить к ним доступ из кода?

person Steven Yates    schedule 19.02.2013

Если вы используете WIX ...

Чтобы сначала ответить на ваше примечание - вы можете получить доступ к настраиваемым значениям из настраиваемого действия (я предполагаю, что вы знаете, как настроить настраиваемое действие ...) - посмотрите на свой объект сеанса (параметр настраиваемого действия) - это имеет CustomActionData, у которого есть индексатор. Укажите название свойства, которое вы хотите получить от него, указав

session.CustomActionData["INSTALLLOCATION"]

Однако вам нужно добавить свойство в свое настраиваемое действие, прежде чем вы сможете получить к нему доступ - и для этого вам нужно указать wix, чтобы он настроил это ...

<CustomAction Id="UNIQUEID" Return="check" Property="YourCustomActionNameInWix" Value="INSTALLLOCATION=[INSTALLLOCATION]" />

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

HTH

person Jay    schedule 19.02.2013
comment
Я не использую WIX, но, возможно, стоит. Не волнуйтесь, спасибо. - person Steven Yates; 20.02.2013