Получение свойства SourceDir из пользовательского действия C # - PullRequest
1 голос
/ 11 ноября 2008

У меня есть несколько каталогов, которые связаны с моим установщиком, и мне нужно получить к ним доступ из пользовательского действия. Я провел некоторое исследование и увидел, что SourceDir может использоваться для получения текущего местоположения dir. Однако я не могу найти примеры того, как получить это свойство? Или другой способ получить текущий каталог?

Может кто-нибудь посоветовать или указать мне что-нибудь кроме бесполезного сайта Microsoft?

Ответы [ 3 ]

1 голос
/ 17 июня 2009

Для C # вы обнаружите, что можете сделать что-то вроде этого:

[CustomAction]
public static ActionResult MyCustomAction(Session session)
{
    string sourceDir = session["SourceDir"];
    string path = Path.Combine(sourceDir, "yourfilename.txt");
    ...

В документации на MSDN , к сожалению, этого недостаточно.

Как упоминает w4g3n3r в своем ответе, SourceDir доступен вам только в определенное время. Короче говоря, вам нужно убедиться, что ваше пользовательское действие называется после вызова действия ResolveSource, которое можно вызвать только после запуска CostInitialize.

После установки SourceDir он должен быть доступен для использования до конца процесса установки.

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

Я предполагаю, что вы используете vbscript для настраиваемого действия. Если это так, к свойствам можно получить доступ через объект Session. Смотрите ниже:

strSourceDir = Session.Property("SourceDir")

Имейте в виду, что свойство SourceDir доступно только в определенное время во время установки .

0 голосов
/ 17 июня 2009

Вы используете InstallShield? Вот пример для InstallScript CA:

MsiGetProperty(hMSI, "CustomActionData", strDirectory, numBuffer);

... где вы также использовали настраиваемое действие «Задать свойство« Тип 51 », чтобы задать для CustomActionData вашей функции значение SOURCEDIR.

...