Я просто хочу создать пользовательский установщик для выполнения кода после установки, которая требует пути установленного приложения.
Я читал о том, как создать пользовательский установщик и Пользовательские действия, а также какие свойства доступны в установщике, но я не вполне добираюсь, как получить доступ к тем свойствам из пользовательского кода установщика. (Даже не запускайте меня на сложности документации 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);
}
}
}
}
Думаю, я должен все делать сам (вздох); -)
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);
}
}
}
}