Обновленный ответ
Извините, я проверил мой оригинальный ответ ниже, и он "неправильный" в некотором смысле:
на самом деле я получаю установщик одним щелчком, но затем операционная система Windowsпредвосхищает контроль над учетной записью пользователя перед установкой в один клик и показывает неизвестного издателя, который побеждает цель пункта 1 (и 3).
Итак, короткий обновленный ответ: невозможно (*) сделатьчто в стандартном исполняемом файле одним щелчком, как те, которые создаются модулем SFX, упоминается ниже.
( Примечание *): хотя это выполнимо путем компиляции пользовательского кода C # и добавленияфайлы в Resources.resx
, например _7zr.exe
и т. д., как в этом примере:
using System.IO;
using System.Diagnostics;
namespace selfextractinstaller
{
class Program
{
static void Main(string[] args)
{
string file_path_7zr = @"_7zr.exe";
using (FileStream fs = new FileStream(file_path_7zr, FileMode.Create))
{
byte[] pgm_bytes = Properties.Resources._7zr;
fs.Write(pgm_bytes, 0, (int)pgm_bytes.Length);
}
string file_path_config = @"config.txt";
using (StreamWriter sw = new StreamWriter(file_path_config, false))
{
sw.Write(Properties.Resources.config);
}
string file_path_7zSD = @"_7zSD.sfx";
using (FileStream fs = new FileStream(file_path_7zSD, FileMode.Create))
{
byte[] pgm_bytes = Properties.Resources._7zSD;
fs.Write(pgm_bytes, 0, (int)pgm_bytes.Length);
}
Process.Start(file_path_7zr, "b");
}
}
}
Подобный код может фактически использоваться в качестве самораспаковывающегося установщика, который не повышен и не требует UAC !
Дополнительные показания
Оригинальный ответ
В отсутствие других ответов я перейду к SFX-модулю для установщиков , упаковав все три .exe
в точках 1-3 (плюс install_all.bat
, запускающий их последовательно) в самораспаковывающийся установщик, который автоматически извлечет все необходимые файлы (включая сертификат) и, наконец, запустит install_all.bat