Defines WiX Condition. Condition is normally associated with CustomActions or WiX elements (e.g. Shortcut).

Condition is nothing else but an XML friendly string wrapper, containing some predefined (commonly used) condition values. You can either use one of the predefined condition values (static members) or define your by specifying full string representation of the required WiX condition when calling the constructor or static method Create.

상속: WixEntity
예제 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PathFileAction"/> class with properties/fields initialized with specified parameters.
 /// </summary>
 /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="PathFileAction"/> instance.</param>
 /// <param name="appPath">Path to the file to be executed on the target system.</param>
 /// <param name="args">The arguments to be passed to the file during the execution.</param>
 /// <param name="workingDir">Working directory for the file execution.</param>
 /// <param name="returnType">The return type of the action.</param>
 /// <param name="when"><see cref="T:WixSharp.When"/> the action should be executed with respect to the <paramref name="step"/> parameter.</param>
 /// <param name="step"><see cref="T:WixSharp.Step"/> the action should be executed before/after during the installation.</param>
 /// <param name="condition">The launch condition for the <see cref="PathFileAction"/>.</param>
 /// <param name="sequence">The MSI sequence the action belongs to.</param>
 public PathFileAction(Id id, string appPath, string args, string workingDir, Return returnType, When when, Step step, Condition condition, Sequence sequence)
     : base(id, returnType, when, step, condition, sequence)
 {
     AppPath = appPath;
     Args = args;
     WorkingDir = workingDir;
     Name = "Action" + (++count) + "_" + IO.Path.GetFileName(appPath);
 }
예제 #2
0
 /// <summary>
 /// Executes a new instance of the <see cref="QtCmdLineAction"/> class with properties/fields initialized with specified parameters.
 /// </summary>
 /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="QtCmdLineAction"/> instance.</param>
 /// <param name="appPath">Path to the application to be executed. This can be a file name only if the location of the application is well-known.</param>
 /// <param name="args">The arguments to be passed to the application during the execution.</param>
 /// <param name="returnType">The return type of the action.</param>
 /// <param name="when"><see cref="T:WixSharp.When"/> the action should be executed with respect to the <paramref name="step"/> parameter.</param>
 /// <param name="step"><see cref="T:WixSharp.Step"/> the action should be executed before/after during the installation.</param>
 /// <param name="condition">The launch condition for the <see cref="QtCmdLineAction"/>.</param>
 /// <param name="sequence">The MSI sequence the action belongs to.</param>
 public QtCmdLineAction(Id id, string appPath, string args, Return returnType, When when, Step step, Condition condition, Sequence sequence)
     : base(id, returnType, when, step, condition, sequence)
 {
     AppPath = appPath;
     Args = args;
     Name = "Action" + (++count) + "_QtCmdLine_" + IO.Path.GetFileName(appPath);
 }
예제 #3
0
        void Bind <T>(Expression <Func <T> > expression, When when = When.Before, Step step = null, bool elevated = false)
        {
            var name    = Reflect.NameOf(expression);
            var handler = expression.Compile()() as Delegate;

            const string wixSharpProperties = "WIXSHARP_RUNTIME_DATA";

            if (handler != null)
            {
                if (this.AbortSetupOnUnhandledExceptions.HasValue)
                {
                    var abortOnErrorName = "WIXSHARP_ABORT_ON_ERROR";

                    if (!Properties.Any(p => p.Name == abortOnErrorName))
                    {
                        this.AddProperty(new Property(abortOnErrorName, this.AbortSetupOnUnhandledExceptions.Value.ToString()));
                    }
                }

                //foreach (string handlerAsm in handler.GetInvocationList().Select(x => x.Method.DeclaringType.Assembly.Location))
                foreach (var type in handler.GetInvocationList().Select(x => x.Method.DeclaringType))
                {
                    string location = type.Assembly.Location;

                    //Resolving scriptAsmLocation is not properly tested yet
                    bool resolveInMemAsms = true;

                    if (resolveInMemAsms)
                    {
                        if (location.IsEmpty())
                        {
                            location = type.Assembly.GetLocation();
                        }
                    }

                    if (location.IsEmpty())
                    {
                        throw new ApplicationException($"The location of the assembly for ManagedProject event handler ({type}) cannot be obtained.\n" +
                                                       "The assembly must be a file based one but it looks like it was loaded from memory.\n" +
                                                       "If you are using CS-Script to build MSI ensure it has 'InMemoryAssembly' set to false.");
                    }

                    if (!this.DefaultRefAssemblies.Contains(location))
                    {
                        this.DefaultRefAssemblies.Add(location);
                    }
                }

                this.AddProperty(new Property("WixSharp_{0}_Handlers".FormatWith(name), GetHandlersInfo(handler as MulticastDelegate)));

                string dllEntry = "WixSharp_{0}_Action".FormatWith(name);
                if (step != null)
                {
                    if (elevated)
                    {
                        this.AddAction(new ElevatedManagedAction(dllEntry)
                        {
                            Id             = new Id(dllEntry),
                            ActionAssembly = thisAsm,
                            Return         = Return.check,
                            When           = when,
                            Step           = step,
                            Condition      = Condition.Create("1"),
                            UsesProperties = "WixSharp_{0}_Handlers,{1},{2}".FormatWith(name, wixSharpProperties, DefaultDeferredProperties),
                        });
                    }
                    else
                    {
                        this.AddAction(new ManagedAction(dllEntry)
                        {
                            Id = new Id(dllEntry), ActionAssembly = thisAsm, Return = Return.check, When = when, Step = step, Condition = Condition.Create("1")
                        });
                    }
                }
            }
        }