November Happy Hour will be moved to Thursday December 5th.
November Happy Hour will be moved to Thursday December 5th.
The problem is that the system cannot instantiate your initializable module because it is abstract.
You can find more information about initializable module or add-on initializer in Add-ons developer guide.
Also see example implementations in Sample add-on source code.
Consider implementing usual non-abstract public initializable module, if you need only initialization logic that should run when site starts. Something like the following:
[InitializableModule]
public class MyInitializableModule : IInitializableModule
{
/// <summary>
/// Executes on initialization.
/// </summary>
/// <param name="context">The context.</param>
public void Initialize(InitializationEngine context)
{
}
/// <summary>
/// Executes on uninitialization.
/// </summary>
/// <param name="context">The context.</param>
public void Uninitialize(InitializationEngine context)
{
}
/// <summary>
/// executes on preload
/// </summary>
/// <param name="parameters">The parameters.</param>
public void Preload(string[] parameters)
{
}
}
Consider inheriting your initializer from EPiServer.Packaging.PackageInitializer class if you need to run some code after add-on is installed, updated or before add-on is removed. Implement corresponding methods of base class. Note that package/add-on initializer is also initializable module, don't forget to call base implementation when overriding Initialize, Uninitialize and Preload methods.
[ModuleDependency(typeof(Packaging.PackagingInitialization))]
[ModuleDependency(typeof(Web.InitializationModule))]
public class MyAddonInitializer : Packaging.PackageInitializer
{
/// <summary>
/// Executes after add-on is installed.
/// </summary>
public override void AfterInstall()
{
}
/// <summary>
/// Executes after add-on is updated.
/// </summary>
public override void AfterUpdate()
{
}
/// <summary>
/// Executes before add-on is uninstalled.
/// </summary>
public override void BeforeUninstall()
{
}
/// <summary>
/// Initializes the module.
/// </summary>
/// <param name="context">The context.</param>
public override void Initialize(InitializationEngine context)
{
base.Initialize(context); // and then do something specific for this add-on initializer...
}
}
Hello guys,
I create my NuGet Package to install my add on. After install I restart the iss and I get this message:
Cannot create an abstract class.
I don't know why I can't write in a log as well.
Some one can help me?
namespace Project.Manager
{
[ModuleDependency(typeof(EPiServer.Packaging.PackagingInitialization))]
public abstract class PackageInitializer : IPackageNotification
//: IInitializableModule
{
static ILog log = log4net.LogManager.GetLogger(typeof(PackageInitializer));
public PackageInitializer()
{
}
public void AfterInstall()
{
log.Error("Begin");
WriteConnectionString();
CopyFiles();
//Execut SQL creation.
log.Error("Done");
}
public void AfterUpdate()
{
log.Error("AfterUpdate");
//System.IO.Directory.CreateDirectory("AfterUpdate");
//throw new NotImplementedException();
}
public void BeforeUninstall()
{
//System.IO.Directory.CreateDirectory("BeforeUninstall");
//throw new NotImplementedException();
}
}
}