Creating a CAB file for your application

 

 

<!-- /* 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.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值