![Удалить SFX-файл после извлечения](https://rvso.com/image/1365820/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20SFX-%D1%84%D0%B0%D0%B9%D0%BB%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%B8%D0%B7%D0%B2%D0%BB%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.png)
Я создал SFX для извлечения некоторых файлов. После извлечения мне нужно, чтобы файл SFX был удален. Насколько я видел, WinRar не предлагает такой возможности. Поэтому я подумал запустить какую-нибудь командную строку DOS (типа bat).
Вот мой код на данный момент (не работает):
SETUP=cmd /c del /f /q "file-to-delete"
Открывается cmd, мигает и закрывается...
У кого-то похожая проблема:http://www.msfn.org/board/topic/34506-sfx-remove-file-after-extraction/
решение1
Посмотрите, работает ли это - включите точный путь к файлу и посмотрите, удалит ли он его. Если да, то вы можете попробовать относительные пути.
SETUP="%comspec%" /c del "c:\program location\file-to-delete"
Если это не помогло, включите эту команду в bat-файл, расположенный там, где находится файл, а затем используйте bat-файл для удаления SFX-файла в директиве WinRar.
@echo off
del "file-to-delete"
решение2
необходимо выбрать режим GUY архива SFX. 32-битный режим rar на 64-разрядной машине не удалит файл, 64-битный режим rar на 64-разрядной машине удалит файл.
в противном случае вы можете использовать PowerShell для удаления папки в cmd.
powershell "rd -r \"%PROGRAMFILES%\company\folder\""
решение3
Это решение удаляет сам самораспаковывающийся (SFX) архив. Другое решение, похоже, удаляет извлеченный файл.
- ВыбиратьDefault64.SFXдля модуля SFX вРасширенные возможности звуковых эффектовдиалог,Модульвкладка.
- вНастраиватьвкладку добавьте следующий текст в кавычках:"%comspec%" /c del "%sfxname%"
- вНастраиватьвкладку не проверяйтеПодождите и вернитесь для получения кода выхода.коробка
Если вы хотите выполнить отладку, измените параметр с /c на /k, чтобы оставить окно команд открытым. Комментарий к архиву должен выглядеть примерно так.
;The comment below contains SFX script commands
Setup="%comspec%" /c del "%sfxname%"
Silent=2
Overwrite=1
Доступные переменные можно отобразить в командной строке после использования /k
E:\New folder>SET SFX
sfxcmd="E:\New folder\ReadMe.exe"
sfxname=E:\New folder\ReadMe.exe
sfxpar=
sfxstime=2020-11-13-16-45-37-025