簡體   English   中英

使用 Inno Setup 安裝具有不同配置的同一 Windows 服務的多個實例

[英]Installing multiple instances of the same Windows service with different configuration using Inno Setup

我在編程和編碼方面很新,我被要求多次安裝服務並讓他們擁有不同的配置文件。 事情是這樣的:

  • 我需要使用不同的名稱安裝相同的服務兩次
  • 每個服務必須讀取不同的配置文件

在配置文件中,我有兩個服務的連接設置需要不同。 該服務只是從另一個控制器檢索信息,但他們需要從兩個不同的控制器接收信息,這就是為什么他們要求擁有具有不同配置文件的同一服務的兩個不同實例。

我被這個困住了。 我知道這兩個服務必須有不同的名稱。 但是如何使用 Inno setup 安裝它們並讓它們讀取兩個不同的配置文件?

該服務是用 #C、.NET Framework 4.5.2 制作的

我有 1 個實例的簡單安裝程序:

[Files]
Source: "C:\...\Service.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\...\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:...\Service.exe.config"; DestDir: "{app}"; Flags: ignoreversion

[Run]
Filename: {sys}\sc.exe; \
    Parameters: "create Service start= auto binPath= ""{app}\Service.exe"""; \
    Flags: runhidden

[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop Service"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete Service"; Flags: runhidden

這是一項非常簡單的服務。 我知道如何添加帶有復選框的Components ,讓用戶選擇他們想要的實例數量。 但我不知道如何添加第二個實例以及如何讓第二個實例讀取第二個配置文件。 我的服務代碼中有什么需要更改的嗎? 這是可能嗎?

我很抱歉我的英語不好,如果我不能更好地解釋自己。 我對編碼和服務幾乎一無所知。 謝謝你的幫助!

服務名稱是create命令后的第一個參數。

因此,在[Run]部分創建兩個條目,每個服務一個:

[Run]
Filename: {sys}\sc.exe; \
    Parameters: "create Service1 start= auto binPath= ""{app}\Service.exe""" ; \
    Flags: runhidden
Filename: {sys}\sc.exe; \
    Parameters: "create Service2 start= auto binPath= ""{app}\Service.exe""" ; \
    Flags: runhidden

[UninstallRun]類似。


關於加載配置文件。 您沒有告訴我們任何有關您的服務代碼如何首先確定從何處加載配置文件的信息。

假設路徑以某種方式硬編碼(或以某種方式以編程方式解析),您可以更改代碼以將服務名稱合並到路徑中。

要確定您的 C# 代碼當前正在運行的服務實例的名稱,請參閱Windows 服務如何確定其 ServiceName?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM