#installation #zip #inno-setup
Вопрос:
Ну, у меня есть проект на Python, и сейчас я создаю установщик. Я добавил к этому файл проекта .exe и zip-файл . ZIP-файл содержит .exe-модули, данные и т.д. И его структура такова:
example.zip: |---project-folder: |----here will be the files. |----here will be the files.
Что я хочу, так это извлечь те файлы, которые находятся внутри project-folder
. Чтобы файл .exe мог работать. У меня есть этот код для извлечения zip-файла:
[Code] procedure InitializeWizard; begin ForceDirectories(ExpandConstant('{localappdata}folder-Aappfolder-B')) end; const SHCONTCH_NOPROGRESSBOX = 4; SHCONTCH_RESPONDYESTOALL = 16; procedure unzip(ZipFile, TargetFldr: variant); var shellobj: variant; SrcFldr, DestFldr: variant; shellfldritems: variant; begin if FileExists(ZipFile) then begin if not DirExists(TargetFldr) then if not ForceDirectories(TargetFldr) then begin MsgBox('Can not create folder ' TargetFldr ' !!', mbError, MB_OK); Exit; end; shellobj := CreateOleObject('Shell.Application'); SrcFldr := shellobj.NameSpace(ZipFile); DestFldr := shellobj.NameSpace(TargetFldr); shellfldritems := SrcFldr.Items; DestFldr.CopyHere( shellfldritems, SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL); end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssPostInstall then begin unzip(ExpandConstant('{app}example.zip'),ExpandConstant('{app}')); end; end;
Результаты:
app.exe
unins.bat
unins.exe
example.zip
(и я хочу, чтобы этот zip-файл был удален после извлечения)project-folder
(здесь я хочу, чтобы файлы находились в папках)
Чего я хочу:
app.exe
unins.bat
unins.exe
- файлы… (файлы, которые находятся внутри
project-folder
)
Ответ №1:
Обратитесь непосредственно к вложенной папке:
SrcFldr := shellobj.NameSpace(ZipFile 'project-folder');