我创建了一个窗口服务并安装它,我创建了它的部署项目并安装了它。安装后我盯着它。它成功启动。
第二天我做了一些修改,重建并重新安装,但现在它没有安装。
然后我认为它与安装程序有关,让我们为服务创建一个自定义安装程序,以便我可以随时更新我的代码。
如果有人将来需要它,我会像这样创建它。
public class MyInstaller : Installer
{
ServiceProcessInstaller spi;
ServiceInstaller si;
public MyInstaller()
{
spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
si = new ServiceInstaller();
si.StartType = ServiceStartMode.Manual;
si.ServiceName = "MyService";
si.DisplayName = "My Service";
si.Description = "service installed from command line";
this.Installers.Add(spi);
this.Installers.Add(si);
}
}
我通过检查参数 args 从 main 方法调用它。
case "-i":
case "-install":
ti = new TransactedInstaller();
mi = new MyInstaller();
ti.Installers.Add(mi);
string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
ctx = new InstallContext(logPath, cmdline);
ti.Context = ctx; //.Context ( ctx );
ti.Install(new Hashtable());
break;
现在当我尝试安装时。我收到错误 System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。
我用谷歌搜索,发现服务将在安装时尝试访问应用程序日志并在那里写入日志。
我没有写任何事件日志。我有我的 log4net 用于记录。但仍然是它的默认行为。
现在如何克服这个问题?即使我拥有所有权限,它也没有安装。
谢谢