mon*_*bre 4 windows-services inno-setup
我需要在安装应用程序时安装并运行服务(使用Inno Setup创建installer.exe)
我使用下面的代码
[Run]
Filename:"{sys}\myservice.exe "; Parameters: "-install"
Run Code Online (Sandbox Code Playgroud)
我不确定这是否正确
(我添加代码以提醒重启但我想知道是否可以在安装后立即运行服务而无需重启pc.)
[Setup]
AlwaysRestart=yes
Run Code Online (Sandbox Code Playgroud)
欢迎任何评论.
除了已接受的答案,我只想让人们更容易使用 Luigi Sandon 的服务库(非常感谢!)。下载脚本后,您需要在安装脚本中添加类似于以下内容的[Code]部分:
[Code]
// source: /sf/answers/379172111/
#include "services_unicode.iss"
const
SERVICE_NAME = 'MyService';
SERVICE_DISPLAY_NAME = 'MyService';
SERVICE_EXE = 'MyService.exe';
procedure CurStepChanged(CurStep: TSetupStep);
begin
Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called');
if CurStep = ssInstall then begin
if ServiceExists(SERVICE_NAME) then begin
if SimpleQueryService(SERVICE_NAME) = SERVICE_RUNNING then begin
SimpleStopService(SERVICE_NAME, True, False);
end;
SimpleDeleteService(SERVICE_NAME);
end;
end
else if CurStep = ssPostInstall then begin
SimpleCreateService(SERVICE_NAME, SERVICE_DISPLAY_NAME, ExpandConstant('{app}\' + SERVICE_EXE), SERVICE_AUTO_START, '', '', False, False);
SimpleStartService(SERVICE_NAME, True, False);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
Log('CurUninstallStepChanged(' + IntToStr(Ord(CurUninstallStep)) + ') called');
if CurUninstallStep = usUninstall then begin
if ServiceExists(SERVICE_NAME) then begin
if SimpleQueryService(SERVICE_NAME) = SERVICE_RUNNING then begin
SimpleStopService(SERVICE_NAME, True, False);
end;
SimpleDeleteService(SERVICE_NAME);
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这不是防弹的,但应该可以很好地处理绝大多数情况。
不幸的是,我无法弄清楚是否有一种方法可以{# VarName}在 [Code] 部分使用发出语法,这就是为什么我将服务名称等声明为常量,以及 #define文件顶部的 's 。如果您想要的常量是 [Setup] 部分的设置之一,则此处的答案很有用,但由于您不能随意向该部分添加内容,因此这不适用于您可能想要为其定义常量的所有内容。
如果你想为你的服务设置一个描述,那么服务库不支持,但使用[Registry]部分很容易,例如:
[Registry]
; set the service description
Root: HKLM; Subkey: "System\CurrentControlSet\Services\{#ServiceName}"; ValueType: string; ValueName: "Description"; ValueData: "{#ServiceDescription}"; Flags: deletevalue uninsdeletekey
Run Code Online (Sandbox Code Playgroud)
最后,我可以确认这也适用于 Windows 10。
| 归档时间: |
|
| 查看次数: |
14792 次 |
| 最近记录: |