我正在尝试做某种安装程序,我需要安装WinService。
我目前所做的是将服务.exe作为资源添加到我的安装程序项目中,然后将其的所有字节写入特定文件夹。
成功将文件写入指定文件夹后,我使用 ManagedInstallerClass.InstallHelper 安装服务
我现在遇到的问题是 ManagedInstallerClass.InstallHelper 以某种方式锁定了服务可执行文件,所以我无法删除/覆盖该文件(从程序外部或内部(,因为它在安装程序应用程序运行时被阻止,从服务文件上的第一个 ManagedInstallerClass.InstallHelper 调用开始。
这是我导致此问题的代码。
private void button1_Click(object sender, EventArgs e)
{
try
{
UninstallAndStopServiceIfExist("RDPBFP_Service");
}
catch (Exception)
{
MessageBox.Show("Service not running, so cannot stop it!");
}
Thread.Sleep(1000);
//File.Delete(@"C:RDPBFPRDP-Bruteforce-Protector_Service.exe");
Directory.CreateDirectory(@"C:RDPBFP");
File.WriteAllBytes(@"C:RDPBFPRDPBFP_Service.exe", Properties.Resources.RDPBFP_Service);
try
{
ManagedInstallerClass.InstallHelper(new string[] { @"C:RDPBFPRDPBFP_Service.exe" });
}
catch (Exception i_ex)
{
MessageBox.Show(i_ex.Message);
}
//StartService("RDPBFP_Service");
}
所以它在第一次运行它时工作正常,但第二次运行它在 File.WriteAllBytes 崩溃。 该服务未运行,Windows 清楚地告诉我,当尝试从 Windows 资源管理器中删除它时,我的安装程序应用程序使用它。
我真的很感激初学者(我是(友好的解释为什么我会以我的方式发生这种情况,在最好的情况下是一个解决方案。我找到了这篇文章,但这对我不起作用。
谢谢建议。
PS:我知道有安装项目和更方便/专业的东西,但这不是我需要/想要的
好吧,我现在通过cmd Process和sc create安装它,仍然想知道为什么安装助手在成功安装后不会释放文件