Я следовал этому руководству:
https://learn.microsoft.com/en-us/dotne ... r?tabs=ext
и я выбрал возможности для создания установщика, используя приложение для установки Microsoft. на. < /p>
Но проблема возникает, когда пришло время удалить его.if (args is { Length: 1 })
{
try
{
string executablePath =
Path.Combine(AppContext.BaseDirectory, "xxxx.exe");
if (args[0] is "/Install")
{
await Cli.Wrap("sc")
.WithArguments(["create", ServiceName, $"binPath={executablePath}", "start=auto"])
.ExecuteAsync();
}
else if (args[0] is "/Uninstall")
{
await Cli.Wrap("sc")
.WithArguments(["stop", ServiceName])
.ExecuteAsync();
await Cli.Wrap("sc")
.WithArguments(["delete", ServiceName])
.ExecuteAsync();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return;
}
< /code>
Теперь моя проблема относится к монущению. Больше кода внизу, если предпринять аргументы, которые используются для фактического запуска приложения, если не предоставляются аргументы. Но это не должно влиять на функциональность установщиков.
Я также использую .msi в качестве обычающего пользователя (который затем выступает для администратора позже) и как сам администратор. Теперь я должен вручную открыть терминал в качестве администратора и типа Sc.exe Delete "ServiceName", которое является неприятностью, но не конец света. Но определенно было бы намного лучше решить это.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -uninstall