Я вижу две проблемы.
Во-первых, вы звоните
zip.AddDirectory(DirectoryPath, "putty.exe");
Метод AddDirectory () добавляет каталог в zip-архив.Перегрузка, которая принимает 2 входа, тот, который вы используете, именует этот каталог в zip-архиве вторым аргументом.Поэтому после совершения этого звонка вы будете иметь в zip-архиве все файлы, которые можно найти в DirectoryPath
в вашей файловой системе.Имя корневого каталога, используемого в zip-архиве, будет «putty.exe».Это как минимум запутанное имя для каталога.Я думаю, что вы, вероятно, не намерены этого.
Если вы хотите добавить файл в архив, используйте AddFile (), а не AddDirectory ().
Во-вторых, согласно документации , команда post-extract запускается
... с использованием каталога извлечения в качестве рабочего каталога дляпроцесс, ...
Так что если в вашем zip-файле есть файл с именем "putty.exe" в корне архива, то команда, которую вы хотите выполнить, это, вероятно, "putty.exe",не ".. \ putty.exe".
Я предлагаю во время разработки вынуть часть, которая сохраняется в самораспаковывающийся файл, и заменить ее сохранением в обычный zip-файл.Изучите созданный вами zip-файл, чтобы убедиться, что он выглядит так, как вы хотите.Когда вы все сделаете правильно, верните часть SaveSelfExtractor () обратно, и вы получите правильный SFX.