MsiSetProperty из C # настраиваемое действие - PullRequest
3 голосов
/ 22 июля 2010

action1Как мне установить свойство MSI из пользовательского действия C #, пока у меня есть это, но как мне получить дескриптор?

[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern int MsiSetProperty(IntPtr hInstall, string szName, string szValue);

public void SetProperty(string propertyName, string propertyValue)
{
    MsiSetProperty(handle, propertyName, propertyValue);
}

Я звоню в CA из WiX со следующей строкой

<CustomAction Id="CA1" BinaryKey="ca1.dll" DllEntry="action1" />

и action1 выглядит так

public class CustomActions
{
    [CustomAction]
    public static ActionResult action1(Session session)
    {
        session.Log("Begin action1");
        SetProperty("xyz", "123");
    }
} 

1 Ответ

4 голосов
/ 22 июля 2010

Вы должны иметь возможность установить свойство, выполнив следующие действия:

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult action1(Session session) 
    { 
        string xyzProperty = "XYZ";

        session[xyzProperty] = "ABC";
    } 
} 

См. Сообщение Кристофера Пейнтера здесь:

http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html

Я уверенон скоро придет, чтобы прокомментировать это.

...