Update ooo320-m1
[ooovba.git] / scp2 / source / ooo / windowscustomaction_ooo.scp
blobd5ececcbac734ee45b0b918968c674eafdf65a38
1 /*************************************************************************
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  * 
5  * Copyright 2008 by Sun Microsystems, Inc.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * $RCSfile: windowscustomaction_ooo.scp,v $
10  * $Revision: 1.30 $
11  *
12  * This file is part of OpenOffice.org.
13  *
14  * OpenOffice.org is free software: you can redistribute it and/or modify
15  * it under the terms of the GNU Lesser General Public License version 3
16  * only, as published by the Free Software Foundation.
17  *
18  * OpenOffice.org is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU Lesser General Public License version 3 for more details
22  * (a copy is included in the LICENSE file that accompanied this code).
23  *
24  * You should have received a copy of the GNU Lesser General Public License
25  * version 3 along with OpenOffice.org.  If not, see
26  * <http://www.openoffice.org/license.html>
27  * for a copy of the LGPLv3 License.
28  *
29 ************************************************************************/
31 #include "macros.inc"
33 WindowsCustomAction gid_Customaction_RenamePrgFolder
34         Name = "RenamePrgFolder";
35         Typ = "1";
36         Source = "shlxtmsi.dll";
37         Target = "RenamePrgFolder";
38         Inbinarytable = 1;
39         Assignment1 = ("InstallExecuteSequence", "VersionNT >= 600 And OLDPRODUCTSSAMEMAJOR And Not REMOVE=\"ALL\" And Not PATCH", "ValidateProductID");
40 End
42 WindowsCustomAction gid_Customaction_RemovePrgFolder
43         Name = "RemovePrgFolder";
44         Typ = "1";
45         Source = "shlxtmsi.dll";
46         Target = "RemovePrgFolder";
47         Inbinarytable = 1;
48         Assignment1 = ("InstallExecuteSequence", "VersionNT >= 600 And OLDPRODUCTSSAMEMAJOR And Not REMOVE=\"ALL\" And Not PATCH", "end");
49 End
51 WindowsCustomAction gid_Customaction_Regallmsdocdll
52         Name = "Regallmsdocdll";
53         Typ = "65";
54         Source = "reg4allmsdoc.dll";
55         Target = "FindRegisteredExtensions";
56         Inbinarytable = 1;
57         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH", "CostFinalize");
58 End
60 WindowsCustomAction gid_Customaction_Regactivexdll1
61         Name = "Regactivexdll1";
62         Typ = "65";
63         Source = "regactivex.dll";
64         Target = "InstallActiveXControl";
65         Inbinarytable = 1;
66         Assignment1 = ("InstallExecuteSequence", "(\&FEATURETEMPLATE=3 Or (\!FEATURETEMPLATE=3 And \&FEATURETEMPLATE=-1)) And Not PATCH", "end");
67 End
69 WindowsCustomAction gid_Customaction_Regactivexdll2
70         Name = "Regactivexdll2";
71         Typ = "65";
72         Source = "regactivex.dll";
73         Target = "DeinstallActiveXControl";
74         Inbinarytable = 1;
75         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=2 And \!FEATURETEMPLATE=3 And Not PATCH", "RemoveExistingProducts");
76 End
78 WindowsCustomAction gid_Customaction_Jfregcadll1
79         Name = "Jfregcadll1";
80         Typ = "65";
81         Source = "jfregca.dll";
82         Target = "install_jf";
83         Inbinarytable = 1;
84         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=3 And Not PATCH", "end");
85 End
87 WindowsCustomAction gid_Customaction_Jfregcadll2
88         Name = "Jfregcadll2";
89         Typ = "65";
90         Source = "jfregca.dll";
91         Target = "uninstall_jf";
92         Inbinarytable = 1;
93         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=2 And \!FEATURETEMPLATE=3 And Not PATCH", "end");
94 End
96 WindowsCustomAction gid_Customaction_sdqsmsidll
97         Name = "sdqsmsidll";
98         Typ = "65";
99         Source = "sdqsmsi.dll";
100         Target = "ShutDownQuickstarter";
101         Inbinarytable = 1;
102         Assignment1 = ("InstallExecuteSequence", "", "IsOfficeRunning");
105 WindowsCustomAction gid_Customaction_qslnkmsidll
106         Name = "qslnkmsidll";
107         Typ = "65";
108         Source = "qslnkmsi.dll";
109         Target = "RemoveQuickstarterLink";
110         Inbinarytable = 1;
111         Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\" And Not PATCH", "sdqsmsidll");
114 WindowsCustomAction gid_Customaction_Shellextensionsdll1
115         Name = "Shellextensionsdll1";
116         Typ = "65";
117         Source = "shlxtmsi.dll";
118         Target = "InstallExecSequenceEntry";
119         Inbinarytable = 1;
120         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=3 And Not PATCH", "end");
123 WindowsCustomAction gid_Customaction_Shellextensionsdll2
124         Name = "Shellextensionsdll2";
125         Typ = "65";
126         Source = "shlxtmsi.dll";
127         Target = "DeinstallExecSequenceEntry";
128         Inbinarytable = 1;
129         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=2 And \!FEATURETEMPLATE=3 And Not PATCH", "end");
132 WindowsCustomAction gid_Customaction_Instooofiltmsidll2
133         Name = "Instooofiltmsidll";
134         Typ = "65";
135         Source = "instooofiltmsi.dll";
136         Target = "RestartIndexingService";
137         Inbinarytable = 1;
138         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH", "end");
141 WindowsCustomAction gid_Customaction_Shellextensionsdll3
142         Name = "Shellextensionsdll3";
143         Typ = "65";
144         Source = "shlxtmsi.dll";
145         Target = "InstallStartmenuFolderIcon";
146         Inbinarytable = 1;
147         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH", "end");
150 WindowsCustomAction gid_Customaction_Shellextensionsdll4
151         Name = "Shellextensionsdll4";
152         Typ = "65";
153         Source = "shlxtmsi.dll";
154         Target = "DeinstallStartmenuFolderIcon";
155         Inbinarytable = 1;
156         Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\" And Not PATCH", "MigrateFeatureStates");
159 WindowsCustomAction gid_Customaction_Shellextensionsdll5
160         Name = "Shellextensionsdll5";
161         Typ = "321";
162         Source = "shlxtmsi.dll";
163         Target = "SetProductInstallMode";
164         Inbinarytable = 1;
165         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH", "FindRelatedProducts");
166         Assignment2 = ("InstallUISequence", "Not REMOVE=\"ALL\" And Not PATCH", "FindRelatedProducts");
169 WindowsCustomAction gid_Customaction_Shellextensionsdll6
170         Name = "Shellextensionsdll6";
171         Typ = "65";
172         Source = "shlxtmsi.dll";
173         Target = "RebuildShellIconCache";
174         Inbinarytable = 1;
175         Assignment1 = ("InstallExecuteSequence", "Not PATCH", "end");
178 WindowsCustomAction gid_Customaction_Shellextensionsdll7
179         Name = "Shellextensionsdll7";
180         Typ = "65";
181         Source = "shlxtmsi.dll";
182         Target = "ExecutePostUninstallScript";
183         Inbinarytable = 1;
184         Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\" And Not PATCH", "InstallValidate");
187 WindowsCustomAction gid_Customaction_Register_Extensions
188         Name = "RegisterExtensions";
189         Typ = "65";
190         Source = "shlxtmsi.dll";
191         Target = "RegisterExtensions";
192         Inbinarytable = 1;
193         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end");
194         Assignment2 = ("AdminExecuteSequence", "Not REMOVE=\"ALL\"", "end");
197 WindowsCustomAction gid_Customaction_Set_Admininstall
198         Name = "SetAdminInstallProperty";
199         Typ = "65";
200         Source = "shlxtmsi.dll";
201         Target = "SetAdminInstallProperty";
202         Inbinarytable = 1;
203         Assignment1 = ("AdminExecuteSequence", "", "InstallInitialize");
207 WindowsCustomAction gid_Customaction_Remove_Extensions
208         Name = "RemoveExtensions";
209         Typ = "65";
210         Source = "shlxtmsi.dll";
211         Target = "RemoveExtensions";
212         Inbinarytable = 1;
213         Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\"", "Shellextensionsdll4");
217 WindowsCustomAction gid_Customaction_Deregister_Extensions
218         Name = "DeregisterExtensions";
219         Typ = "65";
220         Source = "shlxtmsi.dll";
221         Target = "DeregisterExtensions";
222         Inbinarytable = 1;
223         // Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"\"", "gid_Customaction_Remove_Extensions");
224         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"\"", "behind_IsolateComponents");
227 WindowsCustomAction gid_Customaction_Check_Install_Directory
228         Name = "CheckInstallDirectory";
229         Typ = "65";
230         Source = "shlxtmsi.dll";
231         Target = "CheckInstallDirectory";
232         Inbinarytable = 1;
233         Assignment1 = ("InstallExecuteSequence", "Not Installed", "CheckVersions");
234         Assignment2 = ("ControlEvent", "SetupType", "Next", "DoAction", "CheckInstallDirectory", "_IsSetupTypeMin = \"Typical\" And Not Installed", "2");
235         Assignment3 = ("ControlEvent", "CustomSetup", "Next", "DoAction", "CheckInstallDirectory", "Not Installed", "2");
238 WindowsCustomAction gid_Customaction_Dotnetcheck
239         Name = "DotNetCheck";
240         Typ = "321";
241         Source = "shlxtmsi.dll";
242         Target = "DotNetCheck";
243         Inbinarytable = 1;
244         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "LaunchConditions");
245         Assignment2 = ("InstallUISequence", "Not REMOVE=\"ALL\"", "LaunchConditions");
248 WindowsCustomAction gid_Customaction_CopyEditionData
249     Name = "CopyEditionData";
250     Typ = "1";
251     Source = "shlxtmsi.dll";
252     Target = "copyEditionData";
253     Inbinarytable = 1;
254     Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end");
255     Assignment2 = ("AdminExecuteSequence", "", "end");
258 WindowsCustomAction gid_Customaction_CopyExtensionData
259     Name = "CopyExtensionData";
260     Typ = "1";
261     Source = "shlxtmsi.dll";
262     Target = "copyExtensionData";
263     Inbinarytable = 1;
264     Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "RegisterExtensions");
265     Assignment2 = ("AdminExecuteSequence", "", "RegisterExtensions");
268 WindowsCustomAction gid_Customaction_RegCleanOld
269         Name = "RegCleanOld";
270         Typ = "65";
271         Source = "regcleanold.dll";
272         Target = "CleanCurUserOldSystemRegistryFromSetup";
273         Inbinarytable = 1;
274         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH And Not ALLUSERS=\"\"", "end");
277 WindowsCustomAction gid_Customaction_Patch_Regpatchactivex_Patchactivexcontrol
278         Name = "PatchActiveXControl";
279         Typ = "65";
280         Source = "regpatchactivex.dll";
281         Target = "PatchActiveXControl";
282         Inbinarytable = 1;
283         Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=3", "end");
286 WindowsCustomAction gid_Customaction_Patch_SetProductInstallModeAction
287         Name = "SetProductInstallModeAction";
288         Typ = "321";
289         Source = "patchmsi.dll";
290         Target = "SetProductInstallMode";
291         Inbinarytable = 1;
292         Assignment1 = ("InstallExecuteSequence", "Not Installed", "FindRelatedProducts");
293         Assignment2 = ("InstallUISequence", "Not Installed", "FindRelatedProducts");
296 WindowsCustomAction gid_Customaction_Patch_InstallExchangeFiles
297         Name = "InstallExchangeFiles";
298         Typ = "65";
299         Source = "patchmsi.dll";
300         Target = "InstallPatchedFiles";
301         Inbinarytable = 1;
302         Assignment1 = ("InstallExecuteSequence", "Not Installed", "behind_InstallFinalize");
303         Assignment2 = ("AdminExecuteSequence", "", "behind_InstallFinalize");
306 WindowsCustomAction gid_Customaction_Langpack_Register_Extensions
307         Name = "RegisterExtensions";
308         Typ = "65";
309         Source = "lngpckinsthlp.dll";
310         Target = "RegisterExtensions";
311         Inbinarytable = 1;
312         Assignment1 = ("InstallExecuteSequence", "", "end");
313         Assignment2 = ("AdminExecuteSequence", "", "end");
316 WindowsCustomAction gid_Customaction_Langpack_Deregister_Extensions
317         Name = "DeregisterExtensions";
318         Typ = "65";
319         Source = "lngpckinsthlp.dll";
320         Target = "DeregisterExtensions";
321         Inbinarytable = 1;
322         Assignment1 = ("InstallExecuteSequence", "", "InstallInitialize");
325 WindowsCustomAction gid_Customaction_Patch_Register_Extensions
326         Name = "RegisterExtensions";
327         Typ = "65";
328         Source = "patchmsi.dll";
329         Target = "RegisterExtensions";
330         Inbinarytable = 1;
331         Assignment1 = ("InstallExecuteSequence", "", "end");
332         Assignment2 = ("AdminExecuteSequence", "", "end");
335 WindowsCustomAction gid_Customaction_Patch_Deregister_Extensions
336         Name = "DeregisterExtensions";
337         Typ = "65";
338         Source = "patchmsi.dll";
339         Target = "DeregisterExtensions";
340         Inbinarytable = 1;
341         Assignment1 = ("InstallExecuteSequence", "", "InstallInitialize");
344 WindowsCustomAction gid_Customaction_Patch_SetFeatureState
345         Name = "SetFeatureState";
346         Typ = "65";
347         Source = "patchmsi.dll";
348         Target = "SetFeatureState";
349         Inbinarytable = 1;
350         Assignment1 = ("InstallExecuteSequence", "Not Installed", "SetNewFeatureState");
353 WindowsCustomAction gid_Customaction_Patch_DeinstallExchangeFiles
354         Name = "DeinstallExchangeFiles";
355         Typ = "65";
356         Source = "patchmsi.dll";
357         Target = "UninstallPatchedFiles";
358         Inbinarytable = 1;
359         Assignment1 = ("InstallExecuteSequence", "Installed", "RemoveIniValues");
362 WindowsCustomAction gid_Customaction_Patch_Shutdownquickstarter
363         Name = "ShutDownQuickstarter";
364         Typ = "65";
365         Source = "patchmsi.dll";
366         Target = "ShutDownQuickstarter";
367         Inbinarytable = 1;
368         Assignment1 = ("ControlEvent", "DestinationFolder", "Next", "DoAction", "ShutDownQuickstarter", "1", "0");
369         Assignment2 = ("InstallExecuteSequence", "", "IsolateComponents");
372 WindowsCustomAction gid_Customaction_Patch_Isofficerunning
373         Name = "IsOfficeRunning";
374         Typ = "321";
375         Source = "patchmsi.dll";
376         Target = "IsOfficeRunning";
377         Inbinarytable = 1;
378         Assignment1 = ("ControlEvent", "ReadyToInstall", "InstallNow", "DoAction", "IsOfficeRunning", "1", "1");
379         Assignment2 = ("InstallExecuteSequence", "", "RunningOffice");
382 WindowsCustomAction gid_Customaction_Full_Isofficerunning
383         Name = "IsOfficeRunning";
384         Typ = "65";
385         Source = "shlxtmsi.dll";
386         Target = "IsOfficeRunning";
387         Inbinarytable = 1;
388         Assignment1 = ("InstallExecuteSequence", "", "RunningOffice");
391 WindowsCustomAction gid_Customaction_Langpack_Isofficerunning
392         Name = "IsOfficeRunning";
393         Typ = "65";
394         Source = "lngpckinsthlp.dll";
395         Target = "IsOfficeRunning";
396         Inbinarytable = 1;
397         Assignment1 = ("InstallExecuteSequence", "PATCH", "RunningOffice");
400 WindowsCustomAction gid_Customaction_CheckPatchList
401         Name = "CheckPatchList";
402         Typ = "65";
403         Source = "shlxtmsi.dll";
404         Target = "CheckPatchList";
405         Inbinarytable = 1;
406         Assignment1 = ("InstallExecuteSequence", "PATCH", "Patch1NotInstalled");
409 WindowsCustomAction gid_Customaction_Patch_SetUserInstallMode
410         Name = "SetUserInstallMode";
411         Typ = "321";
412         Source = "patchmsi.dll";
413         Target = "GetUserInstallMode";
414         Inbinarytable = 1;
415         Assignment1 = ("ControlEvent", "InstallWelcome", "Next", "DoAction", "SetUserInstallMode", "1", "1");
416         Assignment2 = ("ControlEvent", "InstallChangeFolder", "OK", "DoAction", "SetUserInstallMode", "1", "8");
417         Assignment3 = ("ControlCondition", "DestinationFolder", "Next", "Enable", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
418         Assignment4 = ("ControlCondition", "DestinationFolder", "Next", "Disable", "INVALIDDIRECTORY Or PATCHISOLDER Or ISWRONGPRODUCT");
419         Assignment5 = ("ControlCondition", "DestinationFolder", "LabelStartInstall", "Show", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
420         Assignment6 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir", "Show", "INVALIDDIRECTORY");
421         Assignment7 = ("ControlCondition", "DestinationFolder", "LabelPatchOlder", "Show", "PATCHISOLDER");
422         Assignment8 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct", "Show", "ISWRONGPRODUCT");
423         Assignment9 = ("ControlCondition", "DestinationFolder", "LabelStartInstall2", "Show", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
424         Assignment10 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir2", "Show", "INVALIDDIRECTORY");
425         Assignment11 = ("ControlCondition", "DestinationFolder", "LabelPatchOlder2", "Show", "PATCHISOLDER");
426         Assignment12 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct2", "Show", "ISWRONGPRODUCT");
427         Assignment13 = ("InstallExecuteSequence", "Not Installed", "PatchIsOlder");
430 WindowsCustomAction gid_Customaction_Langpack_SetUserInstallMode
431         Name = "SetUserInstallMode";
432         Typ = "65";
433         Source = "lngpckinsthlp.dll";
434         Target = "GetUserInstallMode";
435         Inbinarytable = 1;
436         Assignment1 = ("ControlEvent", "InstallWelcome", "Next", "DoAction", "SetUserInstallMode", "1", "1");
437         Assignment2 = ("ControlEvent", "InstallChangeFolder", "OK", "DoAction", "SetUserInstallMode", "1", "8");
438         Assignment3 = ("ControlCondition", "DestinationFolder", "Next", "Enable", "NOT INVALIDDIRECTORY And NOT ISWRONGPRODUCT");
439         Assignment4 = ("ControlCondition", "DestinationFolder", "Next", "Disable", "INVALIDDIRECTORY Or ISWRONGPRODUCT");
440         Assignment5 = ("ControlCondition", "DestinationFolder", "LabelStartInstall", "Show", "NOT INVALIDDIRECTORY And NOT ISWRONGPRODUCT");
441         Assignment6 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir", "Show", "INVALIDDIRECTORY");
442         Assignment7 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct", "Show", "ISWRONGPRODUCT");
443         Assignment8 = ("ControlCondition", "DestinationFolder", "LabelStartInstall2", "Show", "NOT INVALIDDIRECTORY And NOT ISWRONGPRODUCT");
444         Assignment9 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir2", "Show", "INVALIDDIRECTORY");
445         Assignment10 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct2", "Show", "ISWRONGPRODUCT");
448 WindowsCustomAction gid_Customaction_MigrateInstallPath
449       Name = "MigrateInstallPath";
450       Typ = "321";
451       Source = "shlxtmsi.dll";
452       Target = "MigrateInstallPath";
453       Inbinarytable = 1;
454       Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" And Not PATCH", "CostInitialize");
455       Assignment2 = ("InstallUISequence", "Not REMOVE=\"ALL\" And Not PATCH", "CostInitialize");
458 WindowsCustomAction gid_Customaction_CheckVersions
459         Name = "CheckVersions";
460         Typ = "321";
461         Source = "sn_tools.dll";
462         Target = "CheckVersions";
463         Inbinarytable = 1;
464         Assignment1 = ("InstallExecuteSequence", "NOT Installed", "NewProductFound");
465         Assignment2 = ("InstallUISequence", "NOT Installed", "NewProductFound");
468 WindowsCustomAction gid_Customaction_ShowReleaseNotes1
469         Name = "ShowReleaseNotesBefore";
470         Typ = "65";
471         Source = "relnotes.dll";
472         Target = "ShowReleaseNotesBefore";
473         Inbinarytable = 1;
474         Assignment1 = ("InstallExecuteSequence", "(Not Installed or ISPATCH) and Not REMOVE=\"ALL\"", "behind_InstallValidate");
477 WindowsCustomAction gid_Customaction_ShowReleaseNotes2
478         Name = "ShowReleaseNotesAfter";
479         Typ = "65";
480         Source = "relnotes.dll";
481         Target = "ShowReleaseNotesAfter";
482         Inbinarytable = 1;
483         Assignment1 = ("InstallExecuteSequence", "(Not Installed or ISPATCH) and Not REMOVE=\"ALL\"", "end");
486 WindowsCustomAction gid_Customaction_RebaseLibrariesonproperties
487         Name = "RebaseLibrariesOnProperties";
488         Typ = "65";
489         Source = "rebase.dll";
490         Target = "RebaseLibrariesOnProperties";
491         Inbinarytable = 1;
492         Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end");
493         Assignment2 = ("AdminExecuteSequence", "Not REMOVE=\"ALL\"", "end");
496 WindowsCustomAction gid_Customaction_ShowSurvey
497         Name = "ShowSurveyAfterUninstall";
498         Typ = "65";
499         Source = "relnotes.dll";
500         Target = "ShowSurveyAfter";
501         Inbinarytable = 1;
502         Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\" and Not UPGRADINGPRODUCTCODE", "end");