Простой пример пользовательского установщика .NET с помощью пути установленного приложения

Я просто хочу создать пользовательский установщик для выполнения кода после установки, которая требует пути установленного приложения.

Я читал о том, как создать пользовательский установщик и Пользовательские действия, а также какие свойства доступны в установщике, но я не вполне добираюсь, как получить доступ к тем свойствам из пользовательского кода установщика. (Даже не запускайте меня на сложности документации Windows Installer.)

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

using System;
using System.ComponentModel;

namespace Hawk
{
    [RunInstaller(true)]
    public class Installer : System.Configuration.Install.Installer
    {
        public Installer()
        {

        }

        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);

            try
            {
                //TODO Find out installer path
                string path = (string)stateSaver["TARGETDIR"]; // Is this correct?
                // Environment.CurrentDirectory; // What is this value?
                MyCustomCode.Initialize(path);
            }
            catch (Exception ex)
            {
                // message box to show error
                this.Rollback(stateSaver);
            }
        }
    }

}

5
задан Pat 27 May 2010 в 16:42
поделиться

1 ответ

Думаю, я должен все делать сам (вздох); -)

using System;
using System.ComponentModel;
using System.IO;

namespace Hawk
{
    [RunInstaller(true)]
    public class Installer : System.Configuration.Install.Installer
    {
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
            try
            {
                string assemblyPath = this.Context.Parameters["assemblypath"];
                // e.g. C:\Program Files\[MANUFACTURER]\[PROGRAM]\[CUSTOM_INSTALLER].dll
                MyCustomCode.Initialize(assemblyPath);
            }
            catch (Exception ex)
            {
                //TODO message box to show error
                this.Rollback(stateSaver);
            }
        }
    }
}
3
ответ дан 15 December 2019 в 06:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: