Deployment Tools Foundation
Sample C# Custom Action
Development Guide > Managed CAs > Writing CAs > C# Sample

MSI custom actions are MUCH easier to write in C# than in C++!

        [CustomAction]
        public static ActionResult SampleCustomAction1(Session session)
        {
            session.Log("Hello from SampleCA1");

            string testProp = session["SampleCATest"];
            string testProp2;
            testProp2 = (string) session.Database.ExecuteScalar(
                "SELECT `Value` FROM `Property` WHERE `Property` = 'SampleCATest'");

            if(testProp == testProp2)
            {
                session.Log("Simple property test passed.");
                return ActionResult.Success;
            }
            else
                return ActionResult.Failure;
        }

A sample CA project with two CAs is included in the Samples\ManagedCA directory. Running the CustomActionTest project will package the CA and insert it into a test MSI. The MSI will invoke the custom actions, but it will not install anything since the second sample CA returns ActionResult.UserExit.

See also:

- Writing Managed Custom Actions
- Specifying the Runtime Version
- Working with MSI Databases
- Building Managed Custom Actions
- Debugging Managed Custom Actions