如何:为应用程序和部署清单重新签名
您在 Windows 窗体应用程序、Windows Presentation Foundation 应用程序 (xbap) 或 Office 解决方案的应用程序清单中修改部署属性后,必须用证书为应用程序和部署清单重新签名。 此过程有助于确保不会在最终用户计算机上安装经过篡改的文件。
为清单重新签名的另一种可能情况是:客户希望用自己的证书为应用程序和部署清单签名。
对应用程序和部署清单重新签名
本过程假定您已更改了应用程序清单文件 (.manifest)。 有关更多信息,请参见如何:更改部署属性。
使用 Mage.exe 对应用程序和部署清单重新签名
打开**“Visual Studio 命令提示”**窗口。
将目录更改为包含您要签名的清单文件的文件夹。
键入以下命令,对应用程序清单文件进行签名。 将 ManifestFileName 替换为清单文件的名称加上扩展名, 将 Certificate 替换为证书文件的相对路径或完全限定路径,将 Password 替换为证书的密码。
mage -sign ManifestFileName.manifest -CertFile Certificate -Password Password
例如,您可以运行以下命令,为外接程序、Windows 窗体应用程序或 Windows Presentation Foundation 浏览器应用程序的应用程序清单签名。 不推荐将 Visual Studio 创建的临时证书部署到生产环境中。
mage -sign WindowsFormsApplication1.exe.manifest -CertFile ..\WindowsFormsApplication1_TemporaryKey.pfx mage -sign ExcelAddin1.dll.manifest -CertFile ..\ExcelAddIn1_TemporaryKey.pfx mage -sign WpfBrowserApplication1.exe.manifest -CertFile ..\WpfBrowserApplication1_TemporaryKey.pfx
键入下面的命令,更新部署清单文件并为其签名,此过程中需像上一步那样替换占位符名称。
mage -update DeploymentManifest -appmanifest ApplicationManifest -CertFile Certificate -Password Password
例如,您可以运行以下命令,对 Excel 外接程序、Windows 窗体应用程序或 Windows Presentation Foundation 浏览器应用程序的部署清单进行更新和签名。
mage -update WindowsFormsApplication1.application -appmanifest WindowsFormsApplication1.exe.manifest -CertFile ..\WindowsFormsApplication1_TemporaryKey.pfx mage -update ExcelAddin1.vsto -appmanifest ExcelAddin1.dll.manifest -CertFile ..\ExcelAddIn1_TemporaryKey.pfx mage -update WpfBrowserApplication1.xbap -appmanifest WpfBrowserApplication1.exe.manifest -CertFile ..\WpfBrowserApplication1_TemporaryKey.pfx
还可选择将主部署清单(publish\应用程序名.application)复制到您的版本部署目录(publish\Application Files\应用程序名_版本)中。
对应用程序和部署清单进行更新和重新签名
本过程假定您已更改了应用程序清单文件 (.manifest),但还有其他一些文件进行了更新。 更新文件时,表示相应文件的哈希也必须更新。
使用 Mage.exe 对应用程序和部署清单进行更新和重新签名
打开**“Visual Studio 命令提示”**窗口。
将目录更改为包含您要签名的清单文件的文件夹。
从发布的输出文件夹的文件中移除 .deploy 文件扩展名。
键入以下命令以使用已更新文件的新哈希来更新应用程序清单,并对应用程序清单文件进行签名。 将 ManifestFileName 替换为清单文件的名称加上扩展名, 将 Certificate 替换为证书文件的相对路径或完全限定路径,将 Password 替换为证书的密码。
mage -update ManifestFileName.manifest -CertFile Certificate -Password Password
例如,您可以运行以下命令,为外接程序、Windows 窗体应用程序或 Windows Presentation Foundation 浏览器应用程序的应用程序清单签名。 不推荐将 Visual Studio 创建的临时证书部署到生产环境中。
mage -update WindowsFormsApplication1.exe.manifest -CertFile ..\WindowsFormsApplication1_TemporaryKey.pfx mage -update ExcelAddin1.dll.manifest -CertFile ..\ExcelAddIn1_TemporaryKey.pfx mage -update WpfBrowserApplication1.exe.manifest -CertFile ..\WpfBrowserApplication1_TemporaryKey.pfx
键入下面的命令,更新部署清单文件并为其签名,此过程中需像上一步那样替换占位符名称。
mage -update DeploymentManifest -appmanifest ApplicationManifest -CertFile Certificate -Password Password
例如,您可以运行以下命令,对 Excel 外接程序、Windows 窗体应用程序或 Windows Presentation Foundation 浏览器应用程序的部署清单进行更新和签名。
mage -update WindowsFormsApplication1.application -appmanifest WindowsFormsApplication1.exe.manifest -CertFile ..\WindowsFormsApplication1_TemporaryKey.pfx mage -update ExcelAddin1.vsto -appmanifest ExcelAddin1.dll.manifest -CertFile ..\ExcelAddIn1_TemporaryKey.pfx mage -update WpfBrowserApplication1.xbap -appmanifest WpfBrowserApplication1.exe.manifest -CertFile ..\WpfBrowserApplication1_TemporaryKey.pfx
将 .deploy 文件扩展名添加回相关文件,应用程序清单文件和部署清单文件除外。
还可选择将主部署清单(publish\<应用程序名>.application)复制到您版本的部署目录(publish\Application Files\<应用程序名>_<版本>)下。
请参见
任务
如何:为 ClickOnce 应用程序向客户端计算机添加一个受信任的发行者