<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:华文仿宋; panose-1:2 1 6 0 4 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:647 135200768 16 0 262303 0;} @font-face {font-family:仿宋_GB2312; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@仿宋_GB2312"; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:"/@华文仿宋"; panose-1:2 1 6 0 4 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:647 135200768 16 0 262303 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} h1 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:1; font-size:24.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} h2 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:2; font-size:18.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} h3 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:3; font-size:14.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} h4 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:4; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} h5 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:5; font-size:10.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} h6 {mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:6; font-size:9.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} p.MsoHeader, li.MsoHeader, div.MsoHeader {margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:none; tab-stops:center 207.65pt right 415.3pt; layout-grid-mode:char; border:none; mso-border-bottom-alt:solid windowtext .75pt; padding:0cm; mso-padding-alt:0cm 0cm 1.0pt 0cm; font-size:9.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} p.MsoFooter, li.MsoFooter, div.MsoFooter {margin:0cm; margin-bottom:.0001pt; mso-pagination:none; tab-stops:center 207.65pt right 415.3pt; layout-grid-mode:char; font-size:9.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:blue; text-decoration:underline; text-underline:single;} p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap {mso-style-noshow:yes; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; background:navy; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} p {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} code {mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; font-family:宋体; mso-ascii-font-family:宋体; mso-fareast-font-family:宋体; mso-hansi-font-family:宋体; mso-bidi-font-family:宋体;} pre {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; font-size:9.0pt; font-family:Verdana; mso-fareast-font-family:宋体; mso-bidi-font-family:宋体;} p.mceitemtable, li.mceitemtable, div.mceitemtable {mso-style-name:mceitemtable; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; border:none; mso-border-alt:dashed #BBBBBB .75pt; padding:0cm; mso-padding-alt:0cm 0cm 0cm 0cm; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} p.mceitemvisualaid, li.mceitemvisualaid, div.mceitemvisualaid {mso-style-name:mceitemvisualaid; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; border:none; mso-border-alt:dashed #BBBBBB .75pt; padding:0cm; mso-padding-alt:0cm 0cm 0cm 0cm; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} p.mcepagebreak, li.mcepagebreak, div.mcepagebreak {mso-style-name:mcepagebreak; margin-top:11.25pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; background:white; border:none; mso-border-top-alt:dotted #CCCCCC .75pt; padding:0cm; mso-padding-alt:0cm 0cm 0cm 0cm; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} p.example1, li.example1, div.example1 {mso-style-name:example1; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:9.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} p.example2, li.example2, div.example2 {mso-style-name:example2; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:9.0pt; font-family:宋体; mso-bidi-font-family:宋体; color:red; font-weight:bold;} p.tablerow1, li.tablerow1, div.tablerow1 {mso-style-name:tablerow1; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; background:#BBBBBB; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:82655602; mso-list-template-ids:291421184;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l0:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l1 {mso-list-id:192963802; mso-list-template-ids:1936332824;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l1:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2 {mso-list-id:806968803; mso-list-template-ids:466800546;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l2:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l2:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:180.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level6 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:216.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level7 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:252.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level8 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:288.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level9 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:324.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3 {mso-list-id:875898329; mso-list-template-ids:1118972858;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l3:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:180.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level6 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:216.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level7 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:252.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l4 {mso-list-id:1038048075; mso-list-template-ids:137400948;} @list l4:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l4:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l5 {mso-list-id:1237742717; mso-list-template-ids:1443903580;} @list l5:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l5:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l5:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l5:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l6 {mso-list-id:1241020646; mso-list-template-ids:-728827552;} @list l6:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l6:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l6:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l6:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l6:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:180.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l7 {mso-list-id:1331716493; mso-list-template-ids:1804367282;} @list l7:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l7:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l7:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l8 {mso-list-id:1353728118; mso-list-template-ids:1617717998;} @list l8:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l8:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l8:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l8:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l9 {mso-list-id:1605459773; mso-list-template-ids:-93836744;} @list l9:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l9:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l9:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l9:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l10 {mso-list-id:1686907125; mso-list-template-ids:367193276;} @list l10:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l10:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l10:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11 {mso-list-id:1704209372; mso-list-template-ids:-1711870164;} @list l11:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l11:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l11:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:180.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level6 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:216.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level7 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:252.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level8 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:288.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l11:level9 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:324.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12 {mso-list-id:1808275861; mso-list-template-ids:553132808;} @list l12:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l12:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l12:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:180.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level6 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:216.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level7 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:252.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level8 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:288.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l12:level9 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:324.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l13 {mso-list-id:1920289517; mso-list-template-ids:1450507068;} @list l13:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l13:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l13:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l14 {mso-list-id:1991323849; mso-list-template-ids:-2011951502;} @list l14:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l14:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l14:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l14:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l15 {mso-list-id:2074162577; mso-list-template-ids:-2089139120;} @list l15:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l15:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l15:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l15:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l16 {mso-list-id:2077361011; mso-list-template-ids:452756110;} @list l16:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l16:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l16:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:108.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l16:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:144.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->
Creating a CAB file for your application
CE DEVELOPED APPLICATIONS FOR INTERMEC IMCs
Using the CAB Wizard
The Windows CE operating system (OS) uses a .cab <<"CABINET">> file to install an application on a Windows CE–based device. A .cab file is composed of multiple files that have been compressed into one file. Compressing multiple files into one file provides the following benefits:
All of the application's files are present.
You can prevent a partial installation.
You can install your application from several sources, such as a desktop computer or a Web site.
Use the CAB Wizard application (Cabwiz.exe) to generate a .cab file for your application.
To create a device-specific .cab file for an application
Create an .inf file with Windows CE–specific modifications.
Optionally, create a Setup.dll file to provide custom control of the installation process.
Use the CAB Wizard to create the .cab file, using the .inf file, the Setup.dll file, and the device-specific application files as parameters.
1 . Creating an .inf File for the CAB Wizard
An .inf file specifies information about an application for the CAB Wizard. The following table shows the sections of an .inf file.
Section | Required | Describes |
Version | Yes | The application's creator and version |
CEStrings | Yes | String substitutions for application and directory names |
Strings | No | String definitions for one or more strings |
CEDevice | Yes | The device platform for which the application is targeted |
DefaultInstall | Yes | The default installation of the application |
SourceDiskNames | Yes | The name and path of the disk on which the application resides |
SourceDiskFiles | Yes | The name and path of the files in which the application resides |
DestinationDirs | Yes | The names and paths of the destination directories for the application on the target device |
CopyFiles | Yes | Default files to copy to the target device |
AddReg | No | Keys and values that the .cab file will add to the registry on the device |
CEShortCuts | No | Shortcuts that the installation application creates on the device |
1.1 Version
The [Version] section is required and specifies the creator of the file and other relevant information.
[Version]
Signature = "signature_name "
"$Windows NT$"
Provider = "INF_creator "
"Intermec Technologies Corporation"
CESignature = "$Windows CE$"
"$Windows CE$"
signature_name
Must be "$Windows NT$" or "$Windows 95$" .
<<Intermec must be NT, since CE is not available on WIN95>>
INF_creator
Company name of the application. For example:
Provider = "Microsoft"
The following code example shows a typical [Version] section.
[Version]
Signature = "$Windows NT$"
Provider = "Microsoft"
CESignature = "$Windows CE$"
1.2 CEStrings
The [CEStrings] section is required and specifies string substitutions for the application name and the default installation directory.
[CEStrings]
AppName = app_name
as required (e.g. Rp32)
InstallDir = default_install_dir
as required (e.g. /storage_card/%AppName%)
app_name
Name of the application. Other instances of % AppName % in the .inf file will be replaced with this string value.
default_install_dir
Default installation directory on the device. Other instances of % InstallDir % in the .inf file will be replaced with this string value.
The following code example shows a typical [CEStrings] section.
[CEStrings]
AppName="Game Pack"
InstallDir=%CE1%/%AppName%
1.3 Strings
The [Strings] section is optional and defines one or more string keys. A string key represents a string of printable characters.
[Strings]
string_key = value
as required (none is o.k.)
[string_key = value ]
value
String consisting of letters, digits, or other printable characters. Enclose value in double quotation marks "" ""if the corresponding string key is used in an item that requires double quotation marks.
The following code example shows a typical [Strings] section.
[Strings]
reg_path = Software/Microsoft/My Test App
1.4 CEDevice
The [CEDevice] section is required and describes the platform for which your application is targeted. All keys in this section are optional. If a key is nonexistent, Windows CE does not perform any checking. Windows CE also does not perform any checking if a key has no data. The exception is UnsupportedPlatforms ; if this key exists but there is no data, the previous value is not overridden.
[CEDevice]
[ProcessorType =[processor_type ]]
i486 (or none is o.k.)
[UnsupportedPlatforms = platform_family_name [,platform_family_name ]]
(none is o.k.)
[VersionMin = [major_version.minor_version ]] ]]
(none is o.k.)
[VersionMax = [major_version.minor_version ]]
(none is o.k.)
[BuildMin = [build_number ]]
(none is o.k.)
[BuildMax = [build_number ]]
(none is o.k.)
processor_type
Value that is returned by SYSTEMINFO. dwProcessorType. For example, the value for the SH3 CPU is 10003 and the MIPS CPU is 4000.
UnsupportedPlatforms
List of platform family names that are known to be unsupported. If the name specified in the [CEDevice.xxx] section is different from that in the [CEDevice] section, both platform_family_name values are unsupported for the microprocessor that is specified by xxx. That is, the list of specific unsupported platform family names is appended to the previous list of unsupported platform family names. Application Manager will not display the application for an unsupported platform. Also, a user will be warned during the setup process if the .cab file is copied to an unsupported device. For example:
[CEDevice]
UnsupportedPlatforms = pltfrm1 ; pltfrm1 is unsupported
[CEDevice.SH3]
UnsupportedPlatforms = ; pltfrm1 is still unsupported
VersionMin and VersionMax
Numeric value that is returned by OSVERSIONINFO. dwVersionMinor and OSVERSIONINFO. dwVersionMajor. The .cab file is valid for the currently connected device if the version of the currently connected device is less than or equal to VersionMax and also greater than or equal to VersionMin. For Windows CE Japanese-language devices, set VersionMin and VersionMax to 2.01.
Note The supported Windows CE OS versions include 1.0, 1.01, 2.0, 2.01, and 2.10. When you use these numbers, be sure to include all significant digits.
BuildMin and BuildMax
Numeric value returned by OSVERSIONINFO. dwBuildNumber. The .cab file is valid for the currently connected device if the version of the currently connected device is less than or equal to BuildMax and also greater than or equal to BuildMin.
The following code example shows three [CEDevice] sections: one that gives basic information for any CPU and two that are specific to the SH3 and the MIPS microprocessors.
[CEDevice] ; A "template" for all platforms
UnsupportedPlatforms = pltfrm1 ; Does not support pltfrm1
; The following specifies version 1.0 devices only.
VersionMin = 1.0
VersionMax = 1.0
[CEDevice.SH3] ; Inherits all [CEDevice] settings
; This will create a .cab file specific to SH3 devices.
ProcessorType = 10003 ; The SH3 .cab file is only valid
; for the SH3 microprocessors.
UnsupportedPlatforms = ; pltfrm1 is still unsupported
; The following overrides the version settings so that no version
; checking is performed.
VersionMin =
VersionMax =
[CEDevice.MIPS] ; Inherits all [CEDevice] settings
; This will create a .cab file specific to "MIPS" devices.
ProcessorType = 4000 ; The MIPS .cab file is only valid
; for the MIPS microprocessor.
UnsupportedPlatforms =pltfrm2 ; pltfrm1 and pltfrm2 are
; unsupported for the "MIPs" .cab file.
Note To create the two CPU-specific .cab files for the setup .inf file in the previous example, you must run the CAB Wizard with the /cpu sh3 mips parameter.
1.5 DefaultInstall
The [DefaultInstall] section is required and describes the default installation of your application.
[DefaultInstall]
Copyfiles=copyfile_list_section [,copyfile_list_section ]
maps to files defined later in INF file (e.g Files.App,Files.Font, Files.Bitmaps...) .
AddReg=add_registry_section [,add_registry_section ]
RegSettings.All
[CEShortcuts=shortcut_list_section [,shortcut_list_section ]] ; new key
(as required)
[CESetupDLL=setup_DLL ] ; new key
(as required)
[CESelfRegister=self_reg_DLL_filename [,self_reg_DLL_filename ] ; new key
(as required)
<<Under DefaultInstall you will be listing items that are expanded upon later in this description…>>
shortcut_list_section
String that identifies one more section that defines shortcuts to a file, as defined in the [CEShortcuts] section.
setup_DLL
Optimal string that specifies a Setup.dll. It is written by the independent software vendor (ISV) and contains customized functions for operations during installation and removal of the application. The file must be specified in the [SourceDisksFiles] section.
self_reg_DLL_filename
String that identifies files that self-register by exporting the DllRegisterServer and DllUnregisterServer Component Object Model (COM) functions. You must specify the files in the [SourceDiskFiles] section.
During installation, if installation on the device fails to call the file's exported DllRegisterServer function, the file's exported DllUnregisterServer function will not be called during removal.
The following code example shows a typical [DefaultInstall] section.
[DefaultInstall]
AddReg = RegSettings.All
CEShortcuts = Shortcuts.All
1.6 SourceDiskNames
The [SourceDiskNames] section is required and describes the name and path of the disk on which your application resides.
[SourceDisksNames]
disk_ordinal = ,disk_label ,,path
1=,"App files" ,,C:/Appsoft/RP32/...
[disk_ordinal = ,disk_label ,,path ]
2=,"Font files",,C:/RpTools/...
3=,"CE Tools" ,,C:/windows ce tools...
The following code example shows a typical [SourceDiskNames] section.
[SourceDisksNames] ; Required section
1 = ,"Common files",,C:/app/common ; Using an absolute path
[SourceDisksNames.SH3]
2 = ,"SH3 files",,sh3 ; Using a relative path
[SourceDisksNames.MIPS]
2 = ,"MIPS files",,mips ; Using a relative path
1.7 SourceDiskFiles
The [SourceDiskFiles] section is required and describes the name and path of the files in which your application resides.
[SourceDisksFiles]
filename =disk_number [,subdir ]
rpm.exe = 1,c:/appsoft/...
[filename =disk_number [,subdir ]]
wcestart.ini = 1
rpmce212.ini = 1
tahoma.ttf = 2
<<Note that [,subdir] is relative to the location of the INF file >>
The following code example shows a typical [SourceDiskFiles] section.
[SourceDisksFiles] ; Required section
begin.wav = 1
end.wav = 1
sample.hlp = 1
[SourceDisksFiles.SH3]
sample.exe = 2 ; Uses the SourceDisksNames.SH3
; identification of 2.
[SourceDisksFiles.MIPS]
sample.exe = 2 ; Uses the SourceDisksNames.MIPS
; identification of 2.
1.8 DestinationDirs
The [DestinationDirs] section is required and describes the names and paths of the destination directories for your application on the target device.
[DestinationDirs]
file_list_section = 0,subdir
Files.App = 0, %InstallDir%
[file_list_section = 0,subdir]
Files.Fonts = 0, %InstallDir%/Fonts
[DefaultDestDir=0,subdir ]
Note Windows CE does not support directory identifiers.
subdir
String that identifies the destination directory. The following table shows the string substitutions that are supported by Windows CE. These can be used only for the beginning of the path. /
String | Replacement value |
%CE1% | /Program Files |
%CE2% | /Windows |
%CE3% | /Windows/Desktop |
%CE4% | /Windows/Startup |
%CE5% | /My Documents |
%CE6% | /Program Files/Accessories |
%CE7% | /Program Files/Communication |
%CE8% | /Program Files/Games |
%CE9% | /Program Files/Pocket Outlook |
%CE10% | /Program Files/Office |
%CE11% | /Windows/Programs |
%CE12% | /Windows/Programs/Accessories |
%CE13% | /Windows/Programs/Communications |
%CE14% | /Windows/Programs/Games |
%CE15% | /Windows/Fonts |
%CE16% | /Windows/Recent |
%CE17% | /Windows/Favorites |
%InstallDir% | Contains the path to the target directory selected by the user during installation. It is declared in the "CEStrings" section |
%AppName% | Contains the application name, defined in the "CEStrings" section |
The following code example shows a typical [DestinationDirs] section.
[DestinationDirs]
Files.Common = 0,%CE1%/My Subdir ;/Program Files/My Subdir
Files.Shared = 0,%CE2% ;/Windows
1.9 CopyFiles
The [Copyfiles] section, under the [DefaultInstall] section, is required and describes the default files to copy to the target device.
<<What they are saying is that under DefaultInstall you listed some files(e.g. Files.App, Files.Fonts, etc…) that must be defined elsewhere in the INF file. This section is identifying that mapping, and that it may contain flags.
[copyfile_list_section ]
[Files.App]
destination_filename ,[source_filename ],[,flags ]
rpm.exe,,,0
[destination_filename ,[source_filename ],[,flags ]]
rpm.ini,rpmce212.ini,,0
The source_filename parameter is optional if it is the same as destination_filename .
flags
Numeric value that specifies an action to be done while copying files. The following table shows the values that are supported by Windows CE.
Flag | Value | Description |
COPYFLG_WARN_IF_SKIP | 0x00000001 | Warn a user if an attempt is made to skip a file after an error has occurred. |
COPYFLG_NOSKIP | 0x00000002 | Do not allow a user to skip copying a file. |
COPYFLG_NO_OVERWRITE | 0x00000010 | Do not overwrite an existing file in the destination directory. |
COPYFLG_REPLACEONLY | 0x00000400 | Copy the source file to the destination directory only if the file is already in the destination directory. |
CE_COPYFLG_NO_DATE_DIALOG | 0x20000000 | Do not copy files if the target file is newer. |
CE_COPYFLG_NODATECHECK | 0x40000000 | Ignore date while overwriting the target file. |
CE_COPYFLG_SHARED | 0x80000000 | Create a reference when a shared DLL is counted. |
The following example is a typical [CopyFiles] section.
[DefaultInstall.SH3]
CopyFiles = Files.Common, Files.SH3
[DefaultInstall.MIPS]
CopyFiles = Files.Common, Files.MIPS
1.10 AddReg
The [AddReg] section, under the [DefaultInstall] section, is optional and describes the keys and values that the .cab file adds to the device registry.
<<What they are saying is that under DefaultInstall you listed a reference to AddReg (AddReg=RegSettings.All).>>
This section defines the options for that setting.
[add_registry_section ]
[RegSettings.All]
registry_root_string , subkey, [value_name ], flags, value [,value ]
[registry_root_string , subkey, [value_name ], flags , value [,value ]]
HKLM,"SOFTWARE/Microsoft/Shell/AutoHide",,0x00010001,1 ; Autohide the taskbar
HKLM,"SOFTWARE/Microsoft/Shell/OnTop",,0x00010001,0 ; Shell is not on top
HKLM,"SOFTWARE/Microsoft/Clock",SHOW_CLOCK,0x00010001,0 ; Clock is not on taskbar taskbar
registry_root_strings
String that specifies the registry root location. The following table shows the values that are supported by Windows CE.
Root string | Description |
HKCR | The same as HKEY_CLASSES_ROOT |
HKCU | The same as HKEY_CURRENT_USER |
HKLM | The same as HKEY_LOCAL_MACHINE |
value_name
Registry value name. If empty, the "(default)" registry value name is used.
flags
Numeric value that specifies information about the registry key. The following table shows the values that are supported by Window CE.
Flag | Value | Description |
FLG_ADDREG_NOCLOBBER | 0x00000002 | If the registry key exists, do not overwrite it. This flag can be used in combination with any of the other flags in this table. |
FLG_ADDREG_TYPE_SZ | 0x00000000 | The REG_SZ registry data type. |
FLG_ADDREG_TYPE_MULTI_SZ | 0x00010000 | The REG_MULTI_SZ registry data type. The value field that follows can be a list of strings separated by commas. |
FLG_ADDREG_TYPE_BINARY | 0x00000001 | The REG_BINARY registry data type. The value field that follows must be a list of numeric values separated by commas, one byte per field, and must not use the 0x hexadecimal prefix. |
FLG_ADDREG_TYPE_DWORD | 0x00010001 | The REG_DWORD data type. Only the non-compatible format in the Win32 Setup .inf documentation is supported. |
The following code example shows a typical [AddReg] section.
AddReg = RegSettings.All
[RegSettings.All]
HKLM,%reg_path%,,0x00000000,alpha ; <default> = "alpha"
HKLM,%reg_path%,test,0x00010001,3 ; Test = 3
HKLM,%reg_path%/new,another,0x00010001,6 ; New/another = 6
1.11 CEShortcuts
The [CEShortcuts] section, a Windows CE–specific section under the [DefaultInstall] section, is optional and describes the shortcuts that the installation application creates on the device.What they are saying is that under DefaultInstall you listed a reference to CEShortcuts (or commented it out)(it may have been to Shortcuts.All). This section defines the options for that setting. >>
[shortcut_list_section ]
shortcut_filename ,shortcut_type_flag ,target_file/path [,standard_destination_path ]
[shortcut_filename ,shortcut_type_flag ,target_file/path [,standard_destination_path ]]
shortcut_filename
String that identifies the shortcut name. It does not require the .lnk extension.
shortcut_type_flag
Numeric value. Zero or empty represents a shortcut to a file; any nonzero numeric value represents a shortcut to a folder.
target_file/path
String value that specifies the destination location. For a file, use the target file name—for example, MyApp.exe—that must be defined in a file copy list. For a path, use a file_list_section name defined in the [DestinationDirs] section—for example, DefaultDestDir —or the % InstallDir% string.
standard_destination_path
Optional string value. A standard %CE x% path or % InstallDir% . If no value is specified, the shortcut_list_section name of the current section or the DefaultDestDir value from the [DestinationDirs] section is used.
The following code example shows a typical [CEShortcuts] section.
CEShortcuts = Shortcuts.All
[Shortcuts.All]
Sample App,0,sample.exe ; Uses the path in DestinationDirs.
Sample App,0,sample.exe,%InstallDir% ; The path is explicitly specified.
1.12 Sample .inf Files
The following code example shows a typical .inf file:
[Version] ; Required section
Signature = "$Windows NT$"
Provider = "Intermec Technologies Corporation"
CESignature = "$Windows CE$"
;[CEDevice]
;ProcessorType =
[DefaultInstall] ; Required section
CopyFiles = Files.App, Files.Fonts, Files.BitMaps, Files.Intl, Files.TelecomNcsCE, Files.Windows, Files.Import, Files.Export, Files.Work, Files.Database, Files.WinCE
AddReg = RegSettings.All
;CEShortcuts = Shortcuts.All
[SourceDisksNames] ; Required section
1 = ,"App files" ,,c:/appsoft/...
2 = ,"Font files" ,,c:/WinNT/Fonts
3 = ,"CE Tools" ,,c:/windows ce tools/wce212/6110ie/mfc/lib/x86
[SourceDisksFiles] ; Required section
rpm.exe = 1,C:/Appsoft/program/wce212/WCEX86Rel6110
wcestart.ini = 1
rpmce212.ini = 1
intermec.bmp = 1
rpmlogo.bmp = 1
rpmname.bmp = 1
import.bmp = 1
export.bmp = 1
clock.bmp = 1
printer.bmp = 1
filecopy.bmp = 1
readme.txt = 1
lang_eng.bin = 1
rpmdata.dbd = 1,database/wce
tahoma.ttf = 2
mfcce212.dll = 3
olece212.dll = 3
olece211.dll = 1,c:/windows ce tools/wce211/NMSD61102.11/mfc/lib/x86
rdm45wce.dll = 1,c:/rptools/rdm45wce/4_50/lib/wce212/wcex86rel
picfmt.dll = 1,c:/rptools/picfmt/1_00/wce212/wcex86rel6110
fmtctrl.dll = 1,c:/rptools/fmtctrl/1_00/wce212/wcex86rel6110
ugrid.dll = 1,c:/rptools/ugrid/1_00/wce212/wcex86rel6110
simple.dll = 1,c:/rptools/pspbm0c/1_00/wce211/wcex86rel
psink.dll = 1,c:/rptools/psink/1_00/wce211/WCEX86RelMinDependency
pslpwce.dll = 1,c:/rptools/pslpm0c/1_00/wce211/WCEX86RelMinDependency
npcpport.dll = 1,c:/rptools/cedk/212_03/installable drivers/printer/npcp
;dexcom.dll = 1,c:/rptools/psdxm0c/1_00/x86
ncsce.exe = 1,c:/rptools/ncsce/1_04
nrinet.dll = 1,c:/rptools/ncsce/1_04
[DestinationDirs] ; Required section
;Shortcuts.All = 0,%CE3% ; /Windows/Desktop
Files.App = 0,%InstallDir%
Files.DataBase = 0,%InstallDir%/DataBase
Files.BitMaps = 0,%InstallDir%/Bitmaps
Files.Fonts = 0,%InstallDir%/Fonts
Files.Intl = 0,%InstallDir%/Intl
Files.TelecomNcsCE = 0,%InstallDir%/Telecom/NcsCE
Files.Windows = 0,%InstallDir%/Windows
Files.Import = 0,%InstallDir%/Import
Files.Export = 0,%InstallDir%/Export
Files.Work = 0,%InstallDir%/Work
Files.WinCE = 0,/storage_card/wince
[CEStrings] ; Required section
AppName = Rp32
InstallDir = /storage_card/%AppName%
[Strings] ; Optional section
;[Shortcuts.All]
;Sample App,0,sample.exe ; Uses the path in DestinationDirs.
;Sample App,0,sample.exe,%InstallDir% ; The path is explicitly specified.
[Files.App]
rpm.exe,,,0
rpm.ini,rpmce212.ini,,0
mfcce212.dll,,,0
olece212.dll,,,0
olece211.dll,,,0
rdm45wce.dll,,,0
picfmt.dll,,,0
fmtctrl.dll,,,0
ugrid.dll,,,0
simple.dll,,,0
psink.dll,,,0
pslpwce.dll,,,0
npcpport.dll,,,0
;dexcom.dll,,,0
[Files.DataBase]
rpmdata.dbd,,,0
[Files.Fonts]
tahoma.ttf,,,0
[Files.BitMaps]
intermec.bmp,,,0
rpmlogo.bmp,,,0
rpmname.bmp,,,0
import.bmp,,,0
export.bmp,,,0
clock.bmp,,,0
printer.bmp,,,0
filecopy.bmp,,,0
[Files.Intl]
lang_eng.bin,,,0
[Files.TelecomNcsCE]
ncsce.exe,,,0
nrinet.dll,,,0
[Files.Windows]
readme.txt,,,0
[Files.Import]
readme.txt,,,0
[Files.Export]
readme.txt,,,0
[Files.Work]
readme.txt,,,0
[Files.WinCE]
wcestart.ini,,,0
[RegSettings.All]
HKLM,"SOFTWARE/Microsoft/Shell/AutoHide",,0x00010001,1 ; Autohide the taskbar
HKLM,"SOFTWARE/Microsoft/Shell/OnTop",,0x00010001,0 ; Shell is not on top
HKLM,"SOFTWARE/Microsoft/Clock",SHOW_CLOCK,0x00010001,0 ; Clock is not on taskbar
The following code example shows an .inf file:
[Version] ; Required section
Signature = "$Windows NT$"
Provider = "Intermec Technologies Corporation"
CESignature = "$Windows CE$"
[DefaultInstall] ; Required section
CopyFiles = Files.App, Files.DLLFiles, Files.Text
AddReg = RegSettings.All
CEShortcuts = Shortcuts.All
[CEStrings ] ; Required section
AppName = 600HdCE
InstallDir = /storage_card/Demo/600HdCE
[Strings] ;Optional
[SourceDisksNames] ; Required section
1 = ,"App files" ,,c:/appsoft/600hdce/deliver
2 = ,"Font files" ,,c:/WinNT/Fonts
3 = ,"CE Tools" ,,c:/windows ce tools/wce212/602ie/mfc/lib/x86
4 = ,"App root" ,,c:/appsoft/600hdce
[SourceDisksFiles] ; Required section
600hdce.exe = 1
Features.txt = 1
LIT_DEU.dll = 1
LIT_ENU.dll = 1
LIT_ESP.dll = 1
LIT_EST.dll = 1
LIT_FRA.dll = 1
LIT_ITA.dll = 1
LIT_NOR.dll = 1
LIT_PTG.dll = 1
LIT_SVE.dll = 1
readme.txt = 1
iscan.dll = 1
mfcce212.dll = 1
olece212.dll = 1
psink.dll = 1
simple.dll = 1
[DestinationDirs] ; Required section
Shortcuts.All = 0,%CE3%
Files.App = 0,%InstallDir%
;Files.BitMaps = 0,%InstallDir%
;Files.DataBase = 0,%InstallDir%
Files.DLLFiles = 0,%InstallDir%
;Files.Fonts = 0,%InstallDir%/Fonts
;Files.WinCE = 0,/storage_card/wince
Files.Text = 0,%InstallDir%
[Files.App]
600hdce.exe,,,0
;600hdce.ini,,,0
;[Files.BitMaps]
;intermec.bmp
;[Files.Database]
;*.dbd,,,0
;*.asc,,,0
[Files.DLLFiles]
LIT_DEU.dll,,,0
LIT_ENU.dll,,,0
LIT_ESP.dll,,,0
LIT_EST.dll,,,0
LIT_FRA.dll,,,0
LIT_ITA.dll,,,0
LIT_NOR.dll,,,0
LIT_PTG.dll,,,0
LIT_SVE.dll,,,0
iscan.dll,,,0
mfcce212.dll,,,0
olece212.dll,,,0
psink.dll,,,0
simple.dll,,,0
;[Files.Fonts]
;tahoma.ttf,,,0
[Files.Text]
Features.txt,,,0
Readme.txt,,,0
[Shortcuts.All]
HW_Demo,0,600hdce.exe
[RegSettings.All] ;Optional
HKLM,"SOFTWARE/Microsoft/Shell/AutoHide",,0x00010001,1 ; Autohide the taskbar
HKLM,"SOFTWARE/Microsoft/Shell/OnTop",,0x00010001,0 ; Shell is not on top
HKLM,"SOFTWARE/Microsoft/Clock",SHOW_CLOCK,0x00010001,0 ; Clock is not on taskbar
.inf example NOTES
NOTE 1: There is some confusion in the application of file naming. Note in the reference:
olece211.dll = 1,c:/windows ce tools/wce211/NMSD61102.11/mfc/lib/x86
rpmdata.dbd = 1,database/wce
that olece211.dll has no reference to the defined file "1" ( 1 = ,"App files" ,,c:/appsoft/...) .
When the explicit path is included as the 2nd argument, it is executed in place of the 1st argument.
However, in the application:
confusion arises. NOTE that the subdirectory path (database/wce) is NOT relative to the 1st argument. Again, inclusion of a 2nd argument preempts the 1st . Instead, the subdirectory path is RELATIVE TO THE LOCATION OF THE INF FILE . In this case the INF file resided in c:/appsoft/…, and the proper database subdirectory file was fetched.
NOTE 2: Notice that this file incorporates placement of a shortcut on the desktop,
which requires only the 3 noted references.
2. Using Installation Functions in Setup.dll
Setup.dll is an optional file that enables you to perform custom operations during installation and removal of your application. The following table shows the functions that are exported by Setup.dll.
Function | Description |
Install_Init | Called before installation begins. Use this function to check the application version when reinstalling an application and to determine if a dependent application is present. |
Install_Exit | Called after installation is complete. Use this function to handle errors that occur during application installation. |
Uninstall_Init | Called before the removal process begins. Use this function to close the application, if the application is running. |
Uninstall_Exit | Called after the removal process is complete. Use this function to save database information to a file and delete the database and to tell the user where the user data files are stored and how to reinstall the application. |
Note Use the [CESelfRegister] section in the .inf file to point to Setup.dll.
3. Using CAB Wizard to Create a .cab File
After you create the .inf file and the optional Setup.dll file, use the CAB Wizard to create the .cab file. The command-line syntax for the CAB Wizard is as follows:
A batch file , located in <program> directory, with the following commands, works well:
inf_file
Setup .inf file path.
dest_directory
Destination directory for the .cab files. If no directory is specified, the .cab files are created in the inf_file directory.
error_file
File name for a log file that contains all warnings and errors that are encountered when the .cab files are compiled. If no file name is specified, errors are displayed in message boxes. If a file name is used, the CAB Wizard runs without the user interface (UI); this is useful for automated builds.
cpu_type
Creates a .cab file for each microprocessor tag that you specify. A microprocessor tag is a label that is used in the Win32 setup .inf file to differentiate between different microprocessor types. The /cpu parameter, followed by multiple cpu_type values, must be the last qualifier in the command line.
The following example creates .cab files for the SH3 and MIPS microprocessors, assuming that the Win32 setup .inf file contains the SH3 and MIPS tags:
cabwiz.exe "c:/myfile.inf" /err myfile.err /cpu sh3 mips
Note The following Windows CE files must be installed in the same directory on the desktop computer: Cabwiz.exe, Makecab.exe, and Cabwiz.ddf. Cabwiz.exe must be called with its full path in order to run correctly.
3.1 Troubleshooting the CAB Wizard
To identify and avoid problems that might occur when using the CAB Wizard, follow these guidelines:
Use %% for a percent sign (%) character when using this character in an .inf file string, as specified in the Win32 documentation. This will not work under the [Strings] section.
Do not use .inf or .cab files that were created for Windows CE to install applications on Windows-based desktop platforms.
Ensure that the Makecab.exe and Cabwiz.ddf files, included with Windows CE, are in the same directory as Cabwiz.exe.
Use the full path to call Cabwiz.exe.
Do not create a .cab file with the Makecab.exe file that is included with Windows CE. You must use Cabwiz.exe, which uses Makecab.exe to generate the .cab files for Windows CE.
Do not set the read-only attribute for .cab files.