100165523.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 370 行 · 第 1/5 页
HTM
370 行
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">这个属性指定所包含文件的压缩样式。其选项如下:</span></p>
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Optimized for speed</span><span style="FONT-FAMILY: 宋体">:用于较大的文件,安装时间较短</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">默认设置</span><span lang="EN-US">)</span></p>
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Optimized for size</span><span style="FONT-FAMILY: 宋体">:用于较小的文件,安装时间较长</span></p>
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">None</span><span style="FONT-FAMILY: 宋体">:不压缩</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="168">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">CAB size</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Package file</span><span style="FONT-FAMILY: 宋体">属性设置为</span><span lang="EN-US">In cabinet files</span><span style="FONT-FAMILY: 宋体">时,这个属性就会被激活。它不仅可以创建一个</span><span lang="EN-US">cabinet</span><span style="FONT-FAMILY: 宋体">文件,还可以设置每个</span><span lang="EN-US">cab</span><span style="FONT-FAMILY: 宋体">文件的最大尺寸</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="168">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Authenticode Signature</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">在选中这个属性时,部署项目的输出就使用</span><span lang="EN-US">Authenticode</span><span style="FONT-FAMILY: 宋体">标记,默认设置为不选中</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="168">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Certificate file</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">用于签名的证书</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="168">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Private key file</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">包含签名文件的数字加密键的私有键</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="168">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Timestamp server URL</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Timestamp</span><span style="FONT-FAMILY: 宋体">服务器的</span><span lang="EN-US">URL</span></p>
</td>
</tr>
</tbody>
</table>
</p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在设置完项目属性后,就应创建部署项目,为</span><span lang="EN-US">SampleClientApp</span><span style="FONT-FAMILY: 宋体">应用程序创建安装程序。在建立项目后,就可以在</span><span lang="EN-US">Solution Explorer</span><span style="FONT-FAMILY: 宋体">中右击项目名,测试安装了,此时可以在上下文菜单中访问</span><span lang="EN-US">Install</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">UnInstall</span><span style="FONT-FAMILY: 宋体">选项。如果一切正常,就可以成功安装和卸载</span><span lang="EN-US">SampleClientApp</span><span style="FONT-FAMILY: 宋体">应用程序。</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">同一个解决方案项目</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">上一个示例成功地创建了一个部署软件包,但有几个缺点。例如,在新程序集添加到原应用程序中时发生的情况。部署项目不会自动识别任何改动,而必须添加新程序集,再验证新的从属文件已包含进来。在较小的应用程序</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">如本例</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">中,这没有什么大不了。但在处理包含几十个甚至上百个程序集的应用程序时,这就可能很难维护了。</span><span lang="EN-US">Visual Studio .NET</span><span style="FONT-FAMILY: 宋体">为解决这个潜在的问题提供了一个简单的方法,即把部署项目包含在应用程序解决方案中,这样就可以把主项目的输出当作部署程序集了。下面以</span><span lang="EN-US">SampleClientApp</span><span style="FONT-FAMILY: 宋体">为例来说明。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在</span><span lang="EN-US">Visual Studio .NET</span><span style="FONT-FAMILY: 宋体">中打开</span><span lang="EN-US">SampleClientApp</span><span style="FONT-FAMILY: 宋体">解决方案,使用</span><span lang="EN-US">Solution Explorer</span><span style="FONT-FAMILY: 宋体">添加一个新项目,选择</span><span lang="EN-US">Deployment and Setup Projects</span><span style="FONT-FAMILY: 宋体">,再选择</span><span lang="EN-US">Setup Project</span><span style="FONT-FAMILY: 宋体">,之后按照上一节介绍的步骤进行。可以把这个项目命名为</span><span lang="EN-US">SampleAppSolutionSetup</span><span style="FONT-FAMILY: 宋体">。在前面的示例中,是在</span><span lang="EN-US">Project</span><span style="FONT-FAMILY: 宋体">菜单中选择</span><span lang="EN-US">Add | Assemblies</span><span style="FONT-FAMILY: 宋体">,添加了程序集,这次在</span><span lang="EN-US">Project</span><span style="FONT-FAMILY: 宋体">菜单中选择</span><span lang="EN-US">Add | Project Output</span><span style="FONT-FAMILY: 宋体">,这会打开</span><span lang="EN-US">Add Project Output Group</span><span style="FONT-FAMILY: 宋体">对话框,如图</span><span lang="EN-US">18-5</span><span style="FONT-FAMILY: 宋体">所示。</span></p>
<p align="center"><span lang="EN-US"><img height="258" src="18/image005.jpg" width="222" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US"> 18-5</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">对话框的顶部有一个下拉列表框,其中显示了当前解决方案中的所有项目。选择主启动项目,然后从下面的列表中选择要包含在项目中的项目,选项有</span><span lang="EN-US">Documentation</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Primary Output</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Localized Resources</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Debug Symbols</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Content Files</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">Source Files</span><span style="FONT-FAMILY: 宋体">。首先选择</span><span lang="EN-US">Primary Output</span><span style="FONT-FAMILY: 宋体">,这包括建立应用程序时的输出和所有的从属文件。对话框中还有一个下拉列表框,其中列出了有效的配置:</span><span lang="EN-US">Debug</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Release</span><span style="FONT-FAMILY: 宋体">以及自己添加的定制配置。这还确定了提取什么输出。对于部署,应使用</span><span lang="EN-US">Release</span><span style="FONT-FAMILY: 宋体">配置。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在完成这些选择后,在</span><span lang="EN-US">Solution Explorer</span><span style="FONT-FAMILY: 宋体">中就会给部署项目添加一个新条目。该条目的名称是</span><span lang="EN-US">Primary output form SampleClientApp(Release .NET)</span><span style="FONT-FAMILY: 宋体">。另外,文件</span><span lang="EN-US">AppSupport.dll</span><span style="FONT-FAMILY: 宋体">将出现在从属文件列表中。与以前一样,不需要搜索从属程序集。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">此时,仍在应用上一节讨论的所有项目属性。可以修改</span><span lang="EN-US">Name</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Manufacturer</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Cab file size</span><span style="FONT-FAMILY: 宋体">和其他属性。在设置好属性后,建立解决方案的</span><span lang="EN-US">Release</span><span style="FONT-FAMILY: 宋体">版本,并测试安装。一切应像希望的那样正常工作。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">为了理解把部署软件包添加到应用程序解决方案中的优点,下面把一个新项目添加到解决方案中。在本例中该项目名为</span><span lang="EN-US">AppSupportII</span><span style="FONT-FAMILY: 宋体">。在该项目中,有一个简单的测试方法,它返回字符串</span><span lang="EN-US">Hello World</span><span style="FONT-FAMILY: 宋体">。在</span><span lang="EN-US">SampleTestApp</span><span style="FONT-FAMILY: 宋体">中设置一个对新增项目的引用,建立解决方案的另一个</span><span lang="EN-US">Release</span><span style="FONT-FAMILY: 宋体">版本。部署项目会自动提取新的程序集,无需我们做任何工作。如果返回去,打开上一个示例中的独立部署项目,除非添加程序集,否则它是不会被提取的。</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">2. </span><span style="FONT-FAMILY: 黑体">简单的</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 黑体">应用程序</span></h4>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">为</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">应用程序创建安装软件包与创建客户安装软件包没有什么不同。下载的示例包含一个</span><span lang="EN-US">SampleWebApp</span><span style="FONT-FAMILY: 宋体">应用程序,它也利用了</span><span lang="EN-US">AppSupport.dll</span><span style="FONT-FAMILY: 宋体">程序集。可以用与创建客户部署项目相同的方式创建部署项目,即创建独立的部署项目,或在原解决方案中创建部署项目。在这个示例中,我们在原解决方案中创建部署项目。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">启动</span><span lang="EN-US">SampleWebApp</span><span style="FONT-FAMILY: 宋体">解决方案,添加一个新的</span><span lang="EN-US">Deployment and Setup</span><span style="FONT-FAMILY: 宋体">项目。这次要确保在</span><span lang="EN-US">Templates</span><span style="FONT-FAMILY: 宋体">窗口中选择</span><span lang="EN-US">Web Setup Project</span><span style="FONT-FAMILY: 宋体">。如果查看该项目的属性视图,就会看到</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">应用程序拥有与客户应用程序相同的所有属性。惟一新增的属性是</span><span lang="EN-US">RestartWWWService</span><span style="FONT-FAMILY: 宋体">。这是一个布尔值,用于在安装过程中启动</span><span lang="EN-US">IIS</span><span style="FONT-FAMILY: 宋体">。如果使用</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">组件,而且没有替换</span><span lang="EN-US">ATL</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">ISAPI dll</span><span style="FONT-FAMILY: 宋体">,就不需要修改该属性。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 16pt"><span style="FONT-FAMILY: 宋体">如果查看文件系统编辑器,就会注意其中只有一个文件夹。</span><span lang="EN-US">Web Application</span><span style="FONT-FAMILY: 宋体">文件夹就是我们的虚拟目录。默认情况下目录名就是部署项目名,位于</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">根目录下。表</span><span lang="EN-US">18-4</span><span style="FONT-FAMILY: 宋体">解释了可以在安装程序中设置的属性。上一节讨论的属性未包括在内。</span></p>
<p class="a5" style="MARGIN-TOP: 8.15pt"><span style="FONT-FAMILY: 黑体">表</span><span lang="EN-US"> 18-4</span></p>
<p class="MsoNormal">
<table class="MsoNormalTable" style="BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 0cm; WIDTH: 125.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="168">
<p class="a2"><span style="FONT-FAMILY: 黑体">属</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 黑体">性</span></p>
</td>
<td style="PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 315.75pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="421">
<p class="a2"><span style="FONT
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?