Как я настраиваю название службы Windows на установку (или легко во время компиляции)?

Ну, вы можете использовать агрегирование:

select date_key, invoice_type,
       max(case when unique_code_b is null then unique_code_a end) as unique_code_a,
       max(unique_code_b) as unique_code_b,
       max(case when unique_code_b is null then vendor_number end) as vendor_number,
       max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type;

РЕДАКТИРОВАТЬ:

Если уникальные коды могут использоваться для сопоставления, то я бы предложил:

select date_key, invoice_type,
       coalesce(unique_code_a, unique_code_b) as unique_code,
       max(case when unique_code_b is null then vendor_number end) as vendor_number,
       max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type, coalesce(unique_code_a, unique_code_b);
22
задан Rune 7 May 2009 в 15:44
поделиться

2 ответа

Я попытался получить доступ к конфигурации с помощью

ConfigurationManager.OpenExeConfiguration(string exePath)

в программе установки, но не смог заставить ее работать.

Вместо этого я решил использовать System.Environment.GetCommandLineArgs () в установщике так:

string[] commandlineArgs = Environment.GetCommandLineArgs();

string servicename;
string servicedisplayname;
ParseServiceNameSwitches(
    commandlineArgs, 
    out servicename, 
    out servicedisplayname);

serviceInstaller.ServiceName = servicename;
serviceInstaller.DisplayName = servicedisplayname;

Теперь я могу установить свои службы, используя

InstallUtil.exe / i InstallableService.dll / Имя_службы = "myserviceinstance_2" / servicedisplayname = "Мой сервис Экземпляр 2 "

Я написал более подробное объяснение здесь .

29
ответ дан 29 November 2019 в 05:04
поделиться

Вы не можете передать это как аргумент командной строки, так как InstallUtil не предоставляет для этого подходящих перехватчиков.

Однако вы можете заставить программу установки службы читать ServiceName из файла конфигурации. Если вы посмотрите код для типичного ServiceInstaller, вы увидите, что это просто вопрос настройки соответствующих свойств DisplayName и ServiceName во время выполнения. Их можно было легко прочитать из файла конфигурации вместо того, чтобы быть жестко запрограммированными.

4
ответ дан 29 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: