Я хочу установить стороннюю службу с WIX. Изначально это не была служба Windows, но сторонняя сторона предоставила еще один исполняемый файл, и с помощью некоторых команд мы можем установить его как службу Windows. Я попробовал это с помощью настраиваемого действия как System.Diagnostics.Process, и аргумент, который я предоставил, был:
startServiceProcess.StartInfo.FileName = installExePath;
startServiceProcess.StartInfo.Arguments = string.Format (CultureInfo.InvariantCulture, "{0} {1} {2} {3}", "-c" + FilesPath, @ "- e" + ExePath, @ "- l" + debugFilePath, «-n» + NewServiceName);
Я хочу установить эту службу с элементом ServiceInstall в WIX (без дополнительных действий).
Можно ли каким-либо образом предоставить ServiceInstall настраиваемый аргумент? Эти аргументы также содержат некоторый путь.
Вы случайно не знаете, какой инструмент они использовали (если есть) для доставки EXE-файла, который вы устанавливаете в качестве службы? Не похоже, что это преобразованная служба srvany.exe? Является ли последний service.exe сборкой .NET, двоичным файлом C++ или каким-либо другим типом двоичного файла? Вы знаете, где записаны эти параметры командной строки? Если они попадают в реестр, у вас должна быть возможность записать их непосредственно со своего MSI? Многие службы также считывают настройки из файла настроек. Есть ли файл настроек для двоичного файла вашей службы? (он все еще может быть, даже если вам будет предложено использовать параметры командной строки)
Термин «аргументы» может использоваться здесь по-разному.
Есть аргументы, которые вы можете предоставить исполняемому файлу службы в командной строке, которые заставят службу установить себя, после чего она станет службой. Если вы хотите использовать ServiceInstall для установки службы, эта командная строка вам не нужна.
Когда он запускается как установленная служба, есть другие аргументы, которые вы можете передать службе, которые будут использоваться при каждом ее запуске. Вы не хотите, чтобы командная строка «install» использовалась каждый раз при запуске службы, обычно это аргументы времени выполнения для службы.
Таким образом, в идеале службу можно установить с помощью элемента ServiceInstall (вместо командной строки), поскольку ServiceInstall является стандартным способом в установщике Windows. А также сторонней стороне может потребоваться указать, нужны ли для установленной службы какие-либо аргументы (параметры) при каждом запуске. Их можно указать в элементе ServiceInstall, а аргументы представляют собой «отформатированную» строку, поэтому вы можете передавать свойства (например, расположение папок) обычным способом, помещая их в квадратные скобки, например [INSTALLFOLDER]
Я думаю, вы хотите посмотреть на это: stackoverflow.com/questions/8595338/…