1*f6dc9357SAndroid Build Coastguard Worker // ExtractGUI.cpp
2*f6dc9357SAndroid Build Coastguard Worker
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker
5*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/IntToString.h"
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/StringConvert.h"
7*f6dc9357SAndroid Build Coastguard Worker
8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/FileDir.h"
9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/FileFind.h"
10*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/FileName.h"
11*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Thread.h"
12*f6dc9357SAndroid Build Coastguard Worker
13*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/ExtractCallback.h"
14*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/FormatUtils.h"
15*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/LangUtils.h"
16*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/resourceGui.h"
17*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/OverwriteDialogRes.h"
18*f6dc9357SAndroid Build Coastguard Worker
19*f6dc9357SAndroid Build Coastguard Worker #include "../Common/ArchiveExtractCallback.h"
20*f6dc9357SAndroid Build Coastguard Worker #include "../Common/PropIDUtils.h"
21*f6dc9357SAndroid Build Coastguard Worker
22*f6dc9357SAndroid Build Coastguard Worker #include "../Explorer/MyMessages.h"
23*f6dc9357SAndroid Build Coastguard Worker
24*f6dc9357SAndroid Build Coastguard Worker #include "resource2.h"
25*f6dc9357SAndroid Build Coastguard Worker #include "ExtractRes.h"
26*f6dc9357SAndroid Build Coastguard Worker
27*f6dc9357SAndroid Build Coastguard Worker #include "ExtractDialog.h"
28*f6dc9357SAndroid Build Coastguard Worker #include "ExtractGUI.h"
29*f6dc9357SAndroid Build Coastguard Worker #include "HashGUI.h"
30*f6dc9357SAndroid Build Coastguard Worker
31*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/PropertyNameRes.h"
32*f6dc9357SAndroid Build Coastguard Worker
33*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
34*f6dc9357SAndroid Build Coastguard Worker using namespace NFile;
35*f6dc9357SAndroid Build Coastguard Worker using namespace NDir;
36*f6dc9357SAndroid Build Coastguard Worker
37*f6dc9357SAndroid Build Coastguard Worker static const wchar_t * const kIncorrectOutDir = L"Incorrect output directory path";
38*f6dc9357SAndroid Build Coastguard Worker
39*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
40*f6dc9357SAndroid Build Coastguard Worker
AddValuePair(UString & s,UINT resourceID,UInt64 value,bool addColon=true)41*f6dc9357SAndroid Build Coastguard Worker static void AddValuePair(UString &s, UINT resourceID, UInt64 value, bool addColon = true)
42*f6dc9357SAndroid Build Coastguard Worker {
43*f6dc9357SAndroid Build Coastguard Worker AddLangString(s, resourceID);
44*f6dc9357SAndroid Build Coastguard Worker if (addColon)
45*f6dc9357SAndroid Build Coastguard Worker s.Add_Colon();
46*f6dc9357SAndroid Build Coastguard Worker s.Add_Space();
47*f6dc9357SAndroid Build Coastguard Worker s.Add_UInt64(value);
48*f6dc9357SAndroid Build Coastguard Worker s.Add_LF();
49*f6dc9357SAndroid Build Coastguard Worker }
50*f6dc9357SAndroid Build Coastguard Worker
AddSizePair(UString & s,UINT resourceID,UInt64 value)51*f6dc9357SAndroid Build Coastguard Worker static void AddSizePair(UString &s, UINT resourceID, UInt64 value)
52*f6dc9357SAndroid Build Coastguard Worker {
53*f6dc9357SAndroid Build Coastguard Worker AddLangString(s, resourceID);
54*f6dc9357SAndroid Build Coastguard Worker s += ": ";
55*f6dc9357SAndroid Build Coastguard Worker AddSizeValue(s, value);
56*f6dc9357SAndroid Build Coastguard Worker s.Add_LF();
57*f6dc9357SAndroid Build Coastguard Worker }
58*f6dc9357SAndroid Build Coastguard Worker
59*f6dc9357SAndroid Build Coastguard Worker #endif
60*f6dc9357SAndroid Build Coastguard Worker
61*f6dc9357SAndroid Build Coastguard Worker class CThreadExtracting: public CProgressThreadVirt
62*f6dc9357SAndroid Build Coastguard Worker {
63*f6dc9357SAndroid Build Coastguard Worker HRESULT ProcessVirt() Z7_override;
64*f6dc9357SAndroid Build Coastguard Worker public:
65*f6dc9357SAndroid Build Coastguard Worker /*
66*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTERNAL_CODECS
67*f6dc9357SAndroid Build Coastguard Worker const CExternalCodecs *externalCodecs;
68*f6dc9357SAndroid Build Coastguard Worker #endif
69*f6dc9357SAndroid Build Coastguard Worker */
70*f6dc9357SAndroid Build Coastguard Worker
71*f6dc9357SAndroid Build Coastguard Worker CCodecs *codecs;
72*f6dc9357SAndroid Build Coastguard Worker CExtractCallbackImp *ExtractCallbackSpec;
73*f6dc9357SAndroid Build Coastguard Worker const CObjectVector<COpenType> *FormatIndices;
74*f6dc9357SAndroid Build Coastguard Worker const CIntVector *ExcludedFormatIndices;
75*f6dc9357SAndroid Build Coastguard Worker
76*f6dc9357SAndroid Build Coastguard Worker UStringVector *ArchivePaths;
77*f6dc9357SAndroid Build Coastguard Worker UStringVector *ArchivePathsFull;
78*f6dc9357SAndroid Build Coastguard Worker const NWildcard::CCensorNode *WildcardCensor;
79*f6dc9357SAndroid Build Coastguard Worker const CExtractOptions *Options;
80*f6dc9357SAndroid Build Coastguard Worker
81*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
82*f6dc9357SAndroid Build Coastguard Worker CHashBundle *HashBundle;
83*f6dc9357SAndroid Build Coastguard Worker virtual void ProcessWasFinished_GuiVirt() Z7_override;
84*f6dc9357SAndroid Build Coastguard Worker #endif
85*f6dc9357SAndroid Build Coastguard Worker
86*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<IFolderArchiveExtractCallback> FolderArchiveExtractCallback;
87*f6dc9357SAndroid Build Coastguard Worker UString Title;
88*f6dc9357SAndroid Build Coastguard Worker
89*f6dc9357SAndroid Build Coastguard Worker CPropNameValPairs Pairs;
90*f6dc9357SAndroid Build Coastguard Worker };
91*f6dc9357SAndroid Build Coastguard Worker
92*f6dc9357SAndroid Build Coastguard Worker
93*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
ProcessWasFinished_GuiVirt()94*f6dc9357SAndroid Build Coastguard Worker void CThreadExtracting::ProcessWasFinished_GuiVirt()
95*f6dc9357SAndroid Build Coastguard Worker {
96*f6dc9357SAndroid Build Coastguard Worker if (HashBundle && !Pairs.IsEmpty())
97*f6dc9357SAndroid Build Coastguard Worker ShowHashResults(Pairs, *this);
98*f6dc9357SAndroid Build Coastguard Worker }
99*f6dc9357SAndroid Build Coastguard Worker #endif
100*f6dc9357SAndroid Build Coastguard Worker
ProcessVirt()101*f6dc9357SAndroid Build Coastguard Worker HRESULT CThreadExtracting::ProcessVirt()
102*f6dc9357SAndroid Build Coastguard Worker {
103*f6dc9357SAndroid Build Coastguard Worker CDecompressStat Stat;
104*f6dc9357SAndroid Build Coastguard Worker
105*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
106*f6dc9357SAndroid Build Coastguard Worker /*
107*f6dc9357SAndroid Build Coastguard Worker if (HashBundle)
108*f6dc9357SAndroid Build Coastguard Worker HashBundle->Init();
109*f6dc9357SAndroid Build Coastguard Worker */
110*f6dc9357SAndroid Build Coastguard Worker #endif
111*f6dc9357SAndroid Build Coastguard Worker
112*f6dc9357SAndroid Build Coastguard Worker HRESULT res = Extract(
113*f6dc9357SAndroid Build Coastguard Worker /*
114*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTERNAL_CODECS
115*f6dc9357SAndroid Build Coastguard Worker externalCodecs,
116*f6dc9357SAndroid Build Coastguard Worker #endif
117*f6dc9357SAndroid Build Coastguard Worker */
118*f6dc9357SAndroid Build Coastguard Worker codecs,
119*f6dc9357SAndroid Build Coastguard Worker *FormatIndices, *ExcludedFormatIndices,
120*f6dc9357SAndroid Build Coastguard Worker *ArchivePaths, *ArchivePathsFull,
121*f6dc9357SAndroid Build Coastguard Worker *WildcardCensor, *Options,
122*f6dc9357SAndroid Build Coastguard Worker ExtractCallbackSpec, ExtractCallbackSpec, FolderArchiveExtractCallback,
123*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
124*f6dc9357SAndroid Build Coastguard Worker HashBundle,
125*f6dc9357SAndroid Build Coastguard Worker #endif
126*f6dc9357SAndroid Build Coastguard Worker FinalMessage.ErrorMessage.Message, Stat);
127*f6dc9357SAndroid Build Coastguard Worker
128*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
129*f6dc9357SAndroid Build Coastguard Worker if (res == S_OK && ExtractCallbackSpec->IsOK())
130*f6dc9357SAndroid Build Coastguard Worker {
131*f6dc9357SAndroid Build Coastguard Worker if (HashBundle)
132*f6dc9357SAndroid Build Coastguard Worker {
133*f6dc9357SAndroid Build Coastguard Worker AddValuePair(Pairs, IDS_ARCHIVES_COLON, Stat.NumArchives);
134*f6dc9357SAndroid Build Coastguard Worker AddSizeValuePair(Pairs, IDS_PROP_PACKED_SIZE, Stat.PackSize);
135*f6dc9357SAndroid Build Coastguard Worker AddHashBundleRes(Pairs, *HashBundle);
136*f6dc9357SAndroid Build Coastguard Worker }
137*f6dc9357SAndroid Build Coastguard Worker else if (Options->TestMode)
138*f6dc9357SAndroid Build Coastguard Worker {
139*f6dc9357SAndroid Build Coastguard Worker UString s;
140*f6dc9357SAndroid Build Coastguard Worker
141*f6dc9357SAndroid Build Coastguard Worker AddValuePair(s, IDS_ARCHIVES_COLON, Stat.NumArchives, false);
142*f6dc9357SAndroid Build Coastguard Worker AddSizePair(s, IDS_PROP_PACKED_SIZE, Stat.PackSize);
143*f6dc9357SAndroid Build Coastguard Worker
144*f6dc9357SAndroid Build Coastguard Worker if (Stat.NumFolders != 0)
145*f6dc9357SAndroid Build Coastguard Worker AddValuePair(s, IDS_PROP_FOLDERS, Stat.NumFolders);
146*f6dc9357SAndroid Build Coastguard Worker AddValuePair(s, IDS_PROP_FILES, Stat.NumFiles);
147*f6dc9357SAndroid Build Coastguard Worker AddSizePair(s, IDS_PROP_SIZE, Stat.UnpackSize);
148*f6dc9357SAndroid Build Coastguard Worker if (Stat.NumAltStreams != 0)
149*f6dc9357SAndroid Build Coastguard Worker {
150*f6dc9357SAndroid Build Coastguard Worker s.Add_LF();
151*f6dc9357SAndroid Build Coastguard Worker AddValuePair(s, IDS_PROP_NUM_ALT_STREAMS, Stat.NumAltStreams);
152*f6dc9357SAndroid Build Coastguard Worker AddSizePair(s, IDS_PROP_ALT_STREAMS_SIZE, Stat.AltStreams_UnpackSize);
153*f6dc9357SAndroid Build Coastguard Worker }
154*f6dc9357SAndroid Build Coastguard Worker s.Add_LF();
155*f6dc9357SAndroid Build Coastguard Worker AddLangString(s, IDS_MESSAGE_NO_ERRORS);
156*f6dc9357SAndroid Build Coastguard Worker FinalMessage.OkMessage.Title = Title;
157*f6dc9357SAndroid Build Coastguard Worker FinalMessage.OkMessage.Message = s;
158*f6dc9357SAndroid Build Coastguard Worker }
159*f6dc9357SAndroid Build Coastguard Worker }
160*f6dc9357SAndroid Build Coastguard Worker #endif
161*f6dc9357SAndroid Build Coastguard Worker
162*f6dc9357SAndroid Build Coastguard Worker return res;
163*f6dc9357SAndroid Build Coastguard Worker }
164*f6dc9357SAndroid Build Coastguard Worker
165*f6dc9357SAndroid Build Coastguard Worker
166*f6dc9357SAndroid Build Coastguard Worker
ExtractGUI(CCodecs * codecs,const CObjectVector<COpenType> & formatIndices,const CIntVector & excludedFormatIndices,UStringVector & archivePaths,UStringVector & archivePathsFull,const NWildcard::CCensorNode & wildcardCensor,CExtractOptions & options,CHashBundle * hb,bool showDialog,bool & messageWasDisplayed,CExtractCallbackImp * extractCallback,HWND hwndParent)167*f6dc9357SAndroid Build Coastguard Worker HRESULT ExtractGUI(
168*f6dc9357SAndroid Build Coastguard Worker // DECL_EXTERNAL_CODECS_LOC_VARS
169*f6dc9357SAndroid Build Coastguard Worker CCodecs *codecs,
170*f6dc9357SAndroid Build Coastguard Worker const CObjectVector<COpenType> &formatIndices,
171*f6dc9357SAndroid Build Coastguard Worker const CIntVector &excludedFormatIndices,
172*f6dc9357SAndroid Build Coastguard Worker UStringVector &archivePaths,
173*f6dc9357SAndroid Build Coastguard Worker UStringVector &archivePathsFull,
174*f6dc9357SAndroid Build Coastguard Worker const NWildcard::CCensorNode &wildcardCensor,
175*f6dc9357SAndroid Build Coastguard Worker CExtractOptions &options,
176*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
177*f6dc9357SAndroid Build Coastguard Worker CHashBundle *hb,
178*f6dc9357SAndroid Build Coastguard Worker #endif
179*f6dc9357SAndroid Build Coastguard Worker bool showDialog,
180*f6dc9357SAndroid Build Coastguard Worker bool &messageWasDisplayed,
181*f6dc9357SAndroid Build Coastguard Worker CExtractCallbackImp *extractCallback,
182*f6dc9357SAndroid Build Coastguard Worker HWND hwndParent)
183*f6dc9357SAndroid Build Coastguard Worker {
184*f6dc9357SAndroid Build Coastguard Worker messageWasDisplayed = false;
185*f6dc9357SAndroid Build Coastguard Worker
186*f6dc9357SAndroid Build Coastguard Worker CThreadExtracting extracter;
187*f6dc9357SAndroid Build Coastguard Worker /*
188*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTERNAL_CODECS
189*f6dc9357SAndroid Build Coastguard Worker extracter.externalCodecs = _externalCodecs;
190*f6dc9357SAndroid Build Coastguard Worker #endif
191*f6dc9357SAndroid Build Coastguard Worker */
192*f6dc9357SAndroid Build Coastguard Worker extracter.codecs = codecs;
193*f6dc9357SAndroid Build Coastguard Worker extracter.FormatIndices = &formatIndices;
194*f6dc9357SAndroid Build Coastguard Worker extracter.ExcludedFormatIndices = &excludedFormatIndices;
195*f6dc9357SAndroid Build Coastguard Worker
196*f6dc9357SAndroid Build Coastguard Worker if (!options.TestMode)
197*f6dc9357SAndroid Build Coastguard Worker {
198*f6dc9357SAndroid Build Coastguard Worker FString outputDir = options.OutputDir;
199*f6dc9357SAndroid Build Coastguard Worker #ifndef UNDER_CE
200*f6dc9357SAndroid Build Coastguard Worker if (outputDir.IsEmpty())
201*f6dc9357SAndroid Build Coastguard Worker GetCurrentDir(outputDir);
202*f6dc9357SAndroid Build Coastguard Worker #endif
203*f6dc9357SAndroid Build Coastguard Worker if (showDialog)
204*f6dc9357SAndroid Build Coastguard Worker {
205*f6dc9357SAndroid Build Coastguard Worker CExtractDialog dialog;
206*f6dc9357SAndroid Build Coastguard Worker FString outputDirFull;
207*f6dc9357SAndroid Build Coastguard Worker if (!MyGetFullPathName(outputDir, outputDirFull))
208*f6dc9357SAndroid Build Coastguard Worker {
209*f6dc9357SAndroid Build Coastguard Worker ShowErrorMessage(kIncorrectOutDir);
210*f6dc9357SAndroid Build Coastguard Worker messageWasDisplayed = true;
211*f6dc9357SAndroid Build Coastguard Worker return E_FAIL;
212*f6dc9357SAndroid Build Coastguard Worker }
213*f6dc9357SAndroid Build Coastguard Worker NName::NormalizeDirPathPrefix(outputDirFull);
214*f6dc9357SAndroid Build Coastguard Worker
215*f6dc9357SAndroid Build Coastguard Worker dialog.DirPath = fs2us(outputDirFull);
216*f6dc9357SAndroid Build Coastguard Worker
217*f6dc9357SAndroid Build Coastguard Worker dialog.OverwriteMode = options.OverwriteMode;
218*f6dc9357SAndroid Build Coastguard Worker dialog.OverwriteMode_Force = options.OverwriteMode_Force;
219*f6dc9357SAndroid Build Coastguard Worker dialog.PathMode = options.PathMode;
220*f6dc9357SAndroid Build Coastguard Worker dialog.PathMode_Force = options.PathMode_Force;
221*f6dc9357SAndroid Build Coastguard Worker dialog.ElimDup = options.ElimDup;
222*f6dc9357SAndroid Build Coastguard Worker
223*f6dc9357SAndroid Build Coastguard Worker if (archivePathsFull.Size() == 1)
224*f6dc9357SAndroid Build Coastguard Worker dialog.ArcPath = archivePathsFull[0];
225*f6dc9357SAndroid Build Coastguard Worker
226*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
227*f6dc9357SAndroid Build Coastguard Worker // dialog.AltStreams = options.NtOptions.AltStreams;
228*f6dc9357SAndroid Build Coastguard Worker dialog.NtSecurity = options.NtOptions.NtSecurity;
229*f6dc9357SAndroid Build Coastguard Worker if (extractCallback->PasswordIsDefined)
230*f6dc9357SAndroid Build Coastguard Worker dialog.Password = extractCallback->Password;
231*f6dc9357SAndroid Build Coastguard Worker #endif
232*f6dc9357SAndroid Build Coastguard Worker
233*f6dc9357SAndroid Build Coastguard Worker if (dialog.Create(hwndParent) != IDOK)
234*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
235*f6dc9357SAndroid Build Coastguard Worker
236*f6dc9357SAndroid Build Coastguard Worker outputDir = us2fs(dialog.DirPath);
237*f6dc9357SAndroid Build Coastguard Worker
238*f6dc9357SAndroid Build Coastguard Worker options.OverwriteMode = dialog.OverwriteMode;
239*f6dc9357SAndroid Build Coastguard Worker options.PathMode = dialog.PathMode;
240*f6dc9357SAndroid Build Coastguard Worker options.ElimDup = dialog.ElimDup;
241*f6dc9357SAndroid Build Coastguard Worker
242*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
243*f6dc9357SAndroid Build Coastguard Worker // options.NtOptions.AltStreams = dialog.AltStreams;
244*f6dc9357SAndroid Build Coastguard Worker options.NtOptions.NtSecurity = dialog.NtSecurity;
245*f6dc9357SAndroid Build Coastguard Worker extractCallback->Password = dialog.Password;
246*f6dc9357SAndroid Build Coastguard Worker extractCallback->PasswordIsDefined = !dialog.Password.IsEmpty();
247*f6dc9357SAndroid Build Coastguard Worker #endif
248*f6dc9357SAndroid Build Coastguard Worker }
249*f6dc9357SAndroid Build Coastguard Worker if (!MyGetFullPathName(outputDir, options.OutputDir))
250*f6dc9357SAndroid Build Coastguard Worker {
251*f6dc9357SAndroid Build Coastguard Worker ShowErrorMessage(kIncorrectOutDir);
252*f6dc9357SAndroid Build Coastguard Worker messageWasDisplayed = true;
253*f6dc9357SAndroid Build Coastguard Worker return E_FAIL;
254*f6dc9357SAndroid Build Coastguard Worker }
255*f6dc9357SAndroid Build Coastguard Worker NName::NormalizeDirPathPrefix(options.OutputDir);
256*f6dc9357SAndroid Build Coastguard Worker
257*f6dc9357SAndroid Build Coastguard Worker /*
258*f6dc9357SAndroid Build Coastguard Worker if (!CreateComplexDirectory(options.OutputDir))
259*f6dc9357SAndroid Build Coastguard Worker {
260*f6dc9357SAndroid Build Coastguard Worker UString s = GetUnicodeString(NError::MyFormatMessage(GetLastError()));
261*f6dc9357SAndroid Build Coastguard Worker UString s2 = MyFormatNew(IDS_CANNOT_CREATE_FOLDER,
262*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_LANG
263*f6dc9357SAndroid Build Coastguard Worker 0x02000603,
264*f6dc9357SAndroid Build Coastguard Worker #endif
265*f6dc9357SAndroid Build Coastguard Worker options.OutputDir);
266*f6dc9357SAndroid Build Coastguard Worker s2.Add_LF();
267*f6dc9357SAndroid Build Coastguard Worker s2 += s;
268*f6dc9357SAndroid Build Coastguard Worker MyMessageBox(s2);
269*f6dc9357SAndroid Build Coastguard Worker return E_FAIL;
270*f6dc9357SAndroid Build Coastguard Worker }
271*f6dc9357SAndroid Build Coastguard Worker */
272*f6dc9357SAndroid Build Coastguard Worker }
273*f6dc9357SAndroid Build Coastguard Worker
274*f6dc9357SAndroid Build Coastguard Worker UString title = LangString(options.TestMode ? IDS_PROGRESS_TESTING : IDS_PROGRESS_EXTRACTING);
275*f6dc9357SAndroid Build Coastguard Worker
276*f6dc9357SAndroid Build Coastguard Worker extracter.Title = title;
277*f6dc9357SAndroid Build Coastguard Worker extracter.ExtractCallbackSpec = extractCallback;
278*f6dc9357SAndroid Build Coastguard Worker extracter.ExtractCallbackSpec->ProgressDialog = &extracter;
279*f6dc9357SAndroid Build Coastguard Worker extracter.FolderArchiveExtractCallback = extractCallback;
280*f6dc9357SAndroid Build Coastguard Worker extracter.ExtractCallbackSpec->Init();
281*f6dc9357SAndroid Build Coastguard Worker
282*f6dc9357SAndroid Build Coastguard Worker extracter.CompressingMode = false;
283*f6dc9357SAndroid Build Coastguard Worker
284*f6dc9357SAndroid Build Coastguard Worker extracter.ArchivePaths = &archivePaths;
285*f6dc9357SAndroid Build Coastguard Worker extracter.ArchivePathsFull = &archivePathsFull;
286*f6dc9357SAndroid Build Coastguard Worker extracter.WildcardCensor = &wildcardCensor;
287*f6dc9357SAndroid Build Coastguard Worker extracter.Options = &options;
288*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX
289*f6dc9357SAndroid Build Coastguard Worker extracter.HashBundle = hb;
290*f6dc9357SAndroid Build Coastguard Worker #endif
291*f6dc9357SAndroid Build Coastguard Worker
292*f6dc9357SAndroid Build Coastguard Worker extracter.IconID = IDI_ICON;
293*f6dc9357SAndroid Build Coastguard Worker
294*f6dc9357SAndroid Build Coastguard Worker RINOK(extracter.Create(title, hwndParent))
295*f6dc9357SAndroid Build Coastguard Worker messageWasDisplayed = extracter.ThreadFinishedOK && extracter.MessagesDisplayed;
296*f6dc9357SAndroid Build Coastguard Worker return extracter.Result;
297*f6dc9357SAndroid Build Coastguard Worker }
298