Example.nsi 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. !include MUI2.nsh
  2. Name `nsJSON plug-in`
  3. OutFile nsJSON_Example.exe
  4. RequestExecutionLevel user
  5. ShowInstDetails show
  6. !define MUI_COMPONENTSPAGE_SMALLDESC
  7. !insertmacro MUI_PAGE_COMPONENTS
  8. !insertmacro MUI_PAGE_INSTFILES
  9. !insertmacro MUI_LANGUAGE English
  10. Section
  11. CreateDirectory $EXEDIR\Output
  12. SectionEnd
  13. Section /o `Parse Example1.json` EXAMPLE1
  14. ; Input: Example1.json; output: Example1.json.
  15. nsJSON::Set /file $EXEDIR\Input\Example1.json
  16. nsJSON::Serialize /format /file $EXEDIR\Output\Example1.json
  17. DetailPrint `Generate: $EXEDIR\Output\Example1.json`
  18. SectionEnd
  19. Section /o `Convert Example1_Unicode.json (no BOM)` EXAMPLE1B
  20. ; Use the /unicode switch if the input file is Unicode.
  21. nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode.json
  22. ; Generate an ANSII output file.
  23. nsJSON::Serialize /format /file $EXEDIR\Output\Example1B_ASCII.json
  24. DetailPrint `Generate: $EXEDIR\Output\Example1B_ASCII.json`
  25. ; Generate a Unicode output file.
  26. nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1B_Unicode.json
  27. DetailPrint `Generate: $EXEDIR\Output\Example1B_Unicode.json`
  28. SectionEnd
  29. Section /o `Convert Example1_Unicode_UTF16BE.json (BOM)` EXAMPLE1C
  30. ; Use the /unicode switch if the input file is Unicode.
  31. nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode_UTF16BE.json
  32. ; Generate an ANSII output file.
  33. nsJSON::Serialize /format /file $EXEDIR\Output\Example1C_ASCII.json
  34. DetailPrint `Generate: $EXEDIR\Output\Example1C_ASCII.json`
  35. ; Generate a Unicode output file.
  36. nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1C_Unicode.json
  37. DetailPrint `Generate: $EXEDIR\Output\Example1C_Unicode.json`
  38. SectionEnd
  39. Section /o `Convert Example1_Unicode_UTF16LE.json (BOM)` EXAMPLE1D
  40. ; Use the /unicode switch if the input file is Unicode.
  41. nsJSON::Set /file /unicode $EXEDIR\Input\Example1_Unicode_UTF16LE.json
  42. ; Generate an ANSII output file.
  43. nsJSON::Serialize /format /file $EXEDIR\Output\Example1D_ASCII.json
  44. DetailPrint `Generate: $EXEDIR\Output\Example1D_ASCII.json`
  45. ; Generate a Unicode output file.
  46. nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1D_Unicode.json
  47. DetailPrint `Generate: $EXEDIR\Output\Example1D_Unicode.json`
  48. SectionEnd
  49. Section /o `Convert Example1_Unicode_UTF8.json (sig)` EXAMPLE1E
  50. ; No /unicode switch is used for UTF8.
  51. nsJSON::Set /file $EXEDIR\Input\Example1_Unicode_UTF8.json
  52. ; Generate an ANSII output file.
  53. nsJSON::Serialize /format /file $EXEDIR\Output\Example1_ASCII.json
  54. DetailPrint `Generate: $EXEDIR\Output\Example1_ASCII.json`
  55. ; Generate a Unicode output file.
  56. nsJSON::Serialize /format /file /unicode $EXEDIR\Output\Example1_Unicode.json
  57. DetailPrint `Generate: $EXEDIR\Output\Example1_Unicode.json`
  58. SectionEnd
  59. Section /o `Parse Example2.json` EXAMPLE2
  60. ; Input: Example2.json; output: Example2.json.
  61. nsJSON::Set /file $EXEDIR\Input\Example2.json
  62. nsJSON::Serialize /format /file $EXEDIR\Output\Example2.json
  63. DetailPrint `Generate: $EXEDIR\Output\Example2.json`
  64. SectionEnd
  65. Section /o `Parse Example3.json` EXAMPLE3
  66. ; Input: Example3.json; output: Example3.json.
  67. nsJSON::Set /file $EXEDIR\Input\Example3.json
  68. nsJSON::Serialize /format /file $EXEDIR\Output\Example3.json
  69. DetailPrint `Generate: $EXEDIR\Output\Example3.json`
  70. SectionEnd
  71. Section /o `Parse Example4.json` EXAMPLE4
  72. ; Input: Example4.json; output: Example4.json.
  73. nsJSON::Set /file $EXEDIR\Input\Example4.json
  74. nsJSON::Serialize /format /file $EXEDIR\Output\Example4.json
  75. DetailPrint `Generate: $EXEDIR\Output\Example4.json`
  76. SectionEnd
  77. Section /o `Parse Example5.json` EXAMPLE5
  78. ; Input: Example5.json; output: Example5.json.
  79. nsJSON::Set /file $EXEDIR\Input\Example5.json
  80. nsJSON::Serialize /format /file $EXEDIR\Output\Example5.json
  81. DetailPrint `Generate: $EXEDIR\Output\Example5.json`
  82. SectionEnd
  83. Section /o `Parse Example5.json (via $$R0)` EXAMPLE5B
  84. ; Input: Example5.json; output: Example5.json.
  85. nsJSON::Set /file $EXEDIR\Input\Example5.json
  86. nsJSON::Serialize /format
  87. Pop $R0
  88. FileOpen $R1 $EXEDIR\Output\Example5B.json w
  89. FileWrite $R1 $R0
  90. FileClose $R1
  91. DetailPrint `Generate: $EXEDIR\Output\Example5B.json`
  92. SectionEnd
  93. Section /o `Generate Example6.json` EXAMPLE6
  94. nsJSON::Set /value `{}`
  95. nsJSON::Set `html` `head` `title` /value `"Example6"`
  96. ; Build an array using individual calls.
  97. nsJSON::Set `html` `body` `h1` /value `[]`
  98. nsJSON::Set `html` `body` `h1` /value `"Hello,\tmy name is"`
  99. nsJSON::Set `html` `body` `h1` `i` /value `"Stuart."`
  100. nsJSON::Set `html` `body` `h1` /value `"Howdy"`
  101. nsJSON::Set `html` `body` `h1` /value `"!"`
  102. nsJSON::Set `html` `body` `h1` /value `[ true, "hello", false ]`
  103. ; Build an array using a JSON string.
  104. nsJSON::Set `html` `body` `h2` /value `[ "I like", { "u": { "i" : "programming" } }, "very much!" ]`
  105. ; Quotes in node keys are allowed; they are escaped automatically.
  106. nsJSON::Set `html` `body` `a href="http://www.afrowsoft.co.uk"` /value `"My website!"`
  107. ; Open the file below in Notepad.
  108. nsJSON::Serialize /format /file $EXEDIR\Output\Example6.json
  109. DetailPrint `Generate: $EXEDIR\Output\Example6.json`
  110. SectionEnd
  111. Section /o `Reading from Example1.json` EXAMPLE7
  112. nsJSON::Set /file $EXEDIR\Input\Example1.json
  113. ; Read quoted string value.
  114. ClearErrors
  115. nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossTerm` /end
  116. ${IfNot} ${Errors}
  117. Pop $R0
  118. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossTerm = $R0`
  119. ${EndIf}
  120. ; Read quoted string value with escaping.
  121. ClearErrors
  122. nsJSON::Set `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para2` /value `"A meta-markup language, used to create markup languages\r\nsuch as DocBook."`
  123. nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para2` /end
  124. ${IfNot} ${Errors}
  125. Pop $R0
  126. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->para2 = $R0`
  127. ${EndIf}
  128. ; Read quoted string value without expanding escape sequences.
  129. ClearErrors
  130. nsJSON::Set `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para3` /value `"A meta-markup language, used to create markup languages\r\nsuch as DocBook."`
  131. nsJSON::Get /noexpand `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `para3` /end
  132. ${IfNot} ${Errors}
  133. Pop $R0
  134. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->para3 = $R0`
  135. ${EndIf}
  136. ; Read the value of an array (returns a comma delimited list).
  137. ClearErrors
  138. nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso` /end
  139. ${IfNot} ${Errors}
  140. Pop $R0
  141. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso = $R0`
  142. ${EndIf}
  143. ; Try reading a node that does not exist.
  144. ClearErrors
  145. nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso2` /end
  146. ${IfNot} ${Errors}
  147. Pop $R0
  148. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso2 = $R0`
  149. ${Else}
  150. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso2 = Does not exist!`
  151. ${EndIf}
  152. ; Try reading an array element that does not exist.
  153. ClearErrors
  154. nsJSON::Get `glossary` `GlossDiv` `GlossList` `GlossEntry` `GlossDef` `GlossSeeAlso` 99 /end
  155. ${IfNot} ${Errors}
  156. Pop $R0
  157. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso->#99 = $R0`
  158. ${Else}
  159. DetailPrint `glossary->GlossDiv->GlossList->GlossEntry->GlossDef->GlossSeeAlso->#99 = Does not exist!`
  160. ${EndIf}
  161. SectionEnd
  162. Section /o `Arrays test` EXAMPLE8
  163. nsJSON::Set /value `{}`
  164. ; You can add an array this way.
  165. nsJSON::Set `array1` /value `[ "value 1", "value 2", { "value 3": "node value" }, "value 4", 5 ]`
  166. ; Inspect array1.
  167. nsJSON::Get `array1` /end
  168. Pop $R0
  169. DetailPrint `array1 = [$R0]`
  170. ; Or you can build it this way.
  171. nsJSON::Set `array2` /value `[]`
  172. nsJSON::Set `array2` /value `"value 1"`
  173. nsJSON::Set `array2` /value `"value 2"`
  174. nsJSON::Set `array2` `value 3` /value `"node value"`
  175. nsJSON::Set `array2` /value `"value 4"`
  176. nsJSON::Set `array2` /value `5`
  177. ; You cannot add the same value again.
  178. nsJSON::Set `array2` /value `5`
  179. ; More.
  180. nsJSON::Set `array2` /value `blah1`
  181. nsJSON::Set `array2` /value `blah2`
  182. ; Inspect array2.
  183. nsJSON::Get `array2` /end
  184. Pop $R0
  185. DetailPrint `array2 = [$R0]`
  186. ; Does an array element exist at the given index?
  187. nsJSON::Get /exists `array2` /index 0 /end
  188. Pop $R0
  189. DetailPrint `array2[0] exists? = $R0`
  190. ${If} $R0 == yes
  191. nsJSON::Get `array2` /index 0 /end
  192. Pop $R0
  193. DetailPrint `array2[0] = $R0`
  194. ${EndIf}
  195. ; Does an array element exist at the given index?
  196. nsJSON::Get /exists `array2` /index -2 /end
  197. Pop $R0
  198. DetailPrint `array2[-2] exists? = $R0`
  199. ${If} $R0 == yes
  200. nsJSON::Get `array2` /index -2 /end
  201. Pop $R0
  202. DetailPrint `array2[-2] = $R0`
  203. ${EndIf}
  204. ; Does an array element exist that matches the value?
  205. nsJSON::Get /exists `array2` `5` /end
  206. Pop $R0
  207. DetailPrint `array2->5 exists? = $R0`
  208. ; Does an array element exist at the given index?
  209. nsJSON::Get /exists `array2` /index 6 /end
  210. Pop $R0
  211. DetailPrint `array2[6] exists? = $R0`
  212. ; Open Example8_1.json to see what it now looks like.
  213. nsJSON::Serialize /format /file $EXEDIR\Output\Example8_1.json
  214. DetailPrint `Generate: $EXEDIR\Output\Example8_1.json`
  215. ; Now delete the element at the given index.
  216. nsJSON::Delete `array1` /index 2 `value 3` /end
  217. DetailPrint `Delete: array1[2]->value 3`
  218. nsJSON::Delete `array2` /index 5 /end
  219. DetailPrint `Delete: array2[5]`
  220. ; Now delete the elements with the given values.
  221. nsJSON::Delete `array1` `value 1` /end
  222. DetailPrint `Delete: array1->value 1`
  223. nsJSON::Delete `array2` `value 2` /end
  224. DetailPrint `Delete: array2->value 2`
  225. ; Inspect array1.
  226. nsJSON::Get `array1` /end
  227. Pop $R0
  228. DetailPrint `array1 = [$R0]`
  229. ; Inspect array2.
  230. nsJSON::Get `array2` /end
  231. Pop $R0
  232. DetailPrint `array2 = [$R0]`
  233. ; Open Example8_2.json to see what it now looks like.
  234. nsJSON::Serialize /format /file $EXEDIR\Output\Example8_2.json
  235. DetailPrint `Generate: $EXEDIR\Output\Example8_2.json`
  236. SectionEnd
  237. Section /o `Node iteration test` EXAMPLE9
  238. nsJSON::Set /file $EXEDIR\Input\Example4.json
  239. ; Get the node count.
  240. nsJSON::Get /count `web-app` `servlet` /index 0 `init-param` /end
  241. Pop $R0
  242. DetailPrint `Node web-app->servlet[0]->init-param contains $R0 children:`
  243. ${For} $R1 0 $R0
  244. nsJSON::Get /key `web-app` `servlet` /index 0 `init-param` /index $R1 /end
  245. Pop $R2
  246. nsJSON::Get `web-app` `servlet` /index 0 `init-param` /index $R1 /end
  247. Pop $R3
  248. nsJSON::Get /type `web-app` `servlet` /index 0 `init-param` /index $R1 /end
  249. Pop $R4
  250. DetailPrint `$R2 = $R3 (type: $R4)`
  251. ${Next}
  252. SectionEnd
  253. Section /o `Load Example5.json into Example4.json` EXAMPLE10
  254. ; Input: Example5.json; output: Example5.json.
  255. nsJSON::Set /file $EXEDIR\Input\Example5.json
  256. nsJSON::Set `menu` `example4` /file $EXEDIR\Input\Example4.json
  257. nsJSON::Serialize /format /file $EXEDIR\Output\Example10.json
  258. DetailPrint `Generate: $EXEDIR\Output\Example10.json`
  259. SectionEnd
  260. Section /o `Copies Preferences.json into PreferencesNew.json` EXAMPLE11
  261. ; Input: Preferences.json; output: PreferencesNew.json.
  262. nsJSON::Set /file $EXEDIR\Input\Preferences.json
  263. nsJSON::Serialize /format /file $EXEDIR\Output\PreferencesNew.json
  264. DetailPrint `Generate: $EXEDIR\Output\PreferencesNew.json`
  265. SectionEnd
  266. Section /o `Copies Preferences2.json into Preferences2New.json` EXAMPLE12
  267. ; Input: Preferences2.json; output: Preferences2New.json.
  268. nsJSON::Set /file $EXEDIR\Input\Preferences2.json
  269. nsJSON::Serialize /format /file $EXEDIR\Output\Preferences2New.json
  270. DetailPrint `Generate: $EXEDIR\Output\Preferences2New.json`
  271. SectionEnd
  272. Section /o `Buffer overflow` EXAMPLE13
  273. ; Input: Example2.json.
  274. nsJSON::Set /file $EXEDIR\Input\Example2.json
  275. nsJSON::Serialize /format
  276. Pop $R0
  277. StrLen $R1 $R0
  278. DetailPrint `Output length: $R1`
  279. MessageBox MB_OK $R0
  280. SectionEnd
  281. Section /o `Get tests` EXAMPLE14
  282. nsJSON::Set /value `{ "a": "a", "b": 1, "c": {} }`
  283. nsJSON::Serialize /format
  284. Pop $R0
  285. DetailPrint `Test: $R0`
  286. nsJSON::Get /key /index 0 /end
  287. Pop $R0
  288. DetailPrint `Key at index 0: $R0`
  289. nsJSON::Get /keys /end
  290. Pop $R0
  291. DetailPrint `Total keys: $R0`
  292. StrCpy $R1 0
  293. ${DoWhile} $R0 > 0
  294. Pop $R2
  295. DetailPrint `Key at index $R1: $R2`
  296. IntOp $R0 $R0 - 1
  297. IntOp $R1 $R1 + 1
  298. ${Loop}
  299. nsJSON::Get /type /index 0 /end
  300. Pop $R0
  301. DetailPrint `Type at index 0: $R0`
  302. nsJSON::Get /exists /index 0 /end
  303. Pop $R0
  304. DetailPrint `Index 0 exists?: $R0`
  305. nsJSON::Get /count /end
  306. Pop $R0
  307. DetailPrint `Count: $R0`
  308. nsJSON::Get /isempty /end
  309. Pop $R0
  310. DetailPrint `Is empty?: $R0`
  311. nsJSON::Get /isempty /index 2 /end
  312. Pop $R0
  313. DetailPrint `Is empty at index 2?: $R0`
  314. ClearErrors
  315. nsJSON::Get /isempty /index 99 /end
  316. IfErrors 0 +2
  317. DetailPrint `Is empty at index 99?: Error flag is set`
  318. SectionEnd
  319. Section /o `Delete tests` EXAMPLE15
  320. nsJSON::Set /value `{ "a": "a", "b": 1, "c": {} }`
  321. nsJSON::Serialize /format
  322. Pop $R0
  323. DetailPrint `Test: $R0`
  324. nsJSON::Delete a /end
  325. Pop $R0
  326. DetailPrint `Delete key "a": $R0`
  327. nsJSON::Serialize /format
  328. Pop $R0
  329. DetailPrint `Now: $R0`
  330. ClearErrors
  331. nsJSON::Delete /index 99 /end
  332. IfErrors 0 +2
  333. DetailPrint `Delete at index 99: Error flag is set`
  334. SectionEnd
  335. Section /o `Empty keys` EXAMPLE16
  336. nsJSON::Set /value `{ "": "a", 1, "c": {} }`
  337. nsJSON::Serialize /format
  338. Pop $R0
  339. DetailPrint `Test: $R0`
  340. nsJSON::Set a "" /value `"abc"`
  341. nsJSON::Serialize /format
  342. Pop $R0
  343. DetailPrint `Test: $R0`
  344. SectionEnd
  345. LangString Example1Desc ${LANG_ENGLISH} `Parses Example1.json and then generates Output\Example1.json`
  346. LangString Example1BDesc ${LANG_ENGLISH} `Parses Example1_Unicode.json (no BOM) and then generates Unicode and ASCII copies`
  347. LangString Example1CDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF16BE.json (BOM) and then generates Unicode and ASCII copies`
  348. LangString Example1DDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF16LE.json (BOM) and then generates Unicode and ASCII copies`
  349. LangString Example1EDesc ${LANG_ENGLISH} `Parses Example1_Unicode_UTF8.json (sig) and then generates Unicode and ASCII copies`
  350. LangString Example2Desc ${LANG_ENGLISH} `Parses Example2.json and then generates Output\Example2.json`
  351. LangString Example3Desc ${LANG_ENGLISH} `Parses Example3.json and then generates Output\Example3.json`
  352. LangString Example4Desc ${LANG_ENGLISH} `Parses Example4.json and then generates Output\Example4.json`
  353. LangString Example5Desc ${LANG_ENGLISH} `Parses Example5.json and then generates Output\Example5.json`
  354. LangString Example5BDesc ${LANG_ENGLISH} `Parses Example5.json and then generates Output\Example5B.json using $$R0`
  355. LangString Example6Desc ${LANG_ENGLISH} `Generates Output\Example6.json using Parse, Set and Serialize`
  356. LangString Example7Desc ${LANG_ENGLISH} `Parses Example1.json and then reads values from the tree using Get`
  357. LangString Example8Desc ${LANG_ENGLISH} `Tests JSON array manipulation while generating Output\Example8.json`
  358. LangString Example9Desc ${LANG_ENGLISH} `Iterates through some nodes in Example4.json by index`
  359. LangString Example10Desc ${LANG_ENGLISH} `Parses Example5.json into Example4.json and then generates Output\Example10.json`
  360. LangString Example11Desc ${LANG_ENGLISH} `Parses Preferences.json and then generates Output\PreferencesNew.json`
  361. LangString Example12Desc ${LANG_ENGLISH} `Parses Preferences2.json and then generates Output\Preferences2New.json`
  362. LangString Example13Desc ${LANG_ENGLISH} `Parses Example2.json (size>NSIS_MAX_STRLEN) and outputs the result.`
  363. LangString Example14Desc ${LANG_ENGLISH} `Simple Get function tests.`
  364. LangString Example15Desc ${LANG_ENGLISH} `Simple Delete function tests.`
  365. LangString Example16Desc ${LANG_ENGLISH} `Empty/missing value keys tests.`
  366. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  367. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1} $(Example1Desc)
  368. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1B} $(Example1BDesc)
  369. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1C} $(Example1CDesc)
  370. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1D} $(Example1DDesc)
  371. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE1E} $(Example1EDesc)
  372. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE2} $(Example2Desc)
  373. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE3} $(Example3Desc)
  374. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE4} $(Example4Desc)
  375. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE5} $(Example5Desc)
  376. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE5B} $(Example5BDesc)
  377. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE6} $(Example6Desc)
  378. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE7} $(Example7Desc)
  379. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE8} $(Example8Desc)
  380. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE9} $(Example9Desc)
  381. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE10} $(Example10Desc)
  382. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE11} $(Example11Desc)
  383. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE12} $(Example12Desc)
  384. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE13} $(Example13Desc)
  385. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE14} $(Example14Desc)
  386. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE15} $(Example15Desc)
  387. !insertmacro MUI_DESCRIPTION_TEXT ${EXAMPLE16} $(Example16Desc)
  388. !insertmacro MUI_FUNCTION_DESCRIPTION_END