我有一个.Net Windows服务。我想创建一个安装程序来安装该Windows服务。
基本上,它必须执行以下操作:
installutil.exe
另外,我想提供一个运行以下命令的卸载程序:
installutil.exe /u MyService.exe
如何使用Inno Setup进行这些操作?
您不需要installutil.exe,甚至可能没有权利重新分配它。
这是我在应用程序中执行此操作的方式:
using System; using System.Collections.Generic; using System.Configuration.Install; using System.IO; using System.Linq; using System.Reflection; using System.ServiceProcess; using System.Text; static void Main(string[] args) { if (System.Environment.UserInteractive) { string parameter = string.Concat(args); switch (parameter) { case "--install": ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); break; case "--uninstall": ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); break; } } else { ServiceBase.Run(new WindowsService()); } }
基本上,您可以使用ManagedInstallerClass示例中所示的方法自行安装/卸载服务。
ManagedInstallerClass
然后,只需在InnoSetup脚本中添加如下内容即可:
[Run] Filename: "{app}\MYSERVICE.EXE"; Parameters: "--install" [UninstallRun] Filename: "{app}\MYSERVICE.EXE"; Parameters: "--uninstall"