Рассмотрим самораспаковывающийся ZIP-файл.
Вы можете создать его с помощью DotNetZip . Требуется .NET на целевой машине. Распаковывает файлы в указанное пользователем место, а затем при необходимости запускает указанную вами программу. Эта программа может быть одним из распакованных файлов или может быть чем-то другим.
Чтобы создать самораспаковывающийся архив с помощью DotNetZip, это код:
// create the SFX
using (ZipFile zip1 = new ZipFile())
{
zip1.AddFile(filename1, ""); // extract to toplevel
zip1.AddFile(filename2, "subdir"); // extract to subdir
zip1.AddFile(filename3, "subdir");
zip1.Comment = "This will be embedded into a self-extracting exe";
zip1.AddEntry("Readme.txt", "This is Update XXX of product YYY");
var sfxOptions = new SelfExtractorSaveOptions {
Flavor = SelfExtractorFlavor.WinFormsApplication,
Quiet = false, // false == show a UI
DefaultExtractDirectory = UnpackDirectory
}
zip1.SaveSelfExtractor(SfxFileToCreate, sfxOptions);
}
Пользовательский интерфейс сгенерированного SFX выглядит следующим образом:
SFX не зависит от MSI, поэтому нет опции удаления. Это может или не может быть хорошей вещью.