对应用程序清单和部署清单重新签名

更改 Windows 窗体应用程序、Windows Presentation Foundation 应用程序 (xbap) 或 Office 解决方案的应用程序清单中的部署属性后,必须使用证书对应用程序清单和部署清单进行重新签名。 此过程有助于确保不会在最终用户计算机上安装经过篡改的文件。

可能需要对清单重新签名的另一种情况是当客户希望使用他们自己的证书对应用程序和部署清单签名时。

对应用程序清单和部署清单重新签名

此过程假定你已对应用程序清单文件 (.manifest) 进行了更改。 有关详细信息,请参阅如何:更改部署属性

注意

在适用于 .NET Core 3.1 和 .NET 5 或更高版本的 ClickOnce 中,使用 dotnetmage.exe,而不是 Mage.exe。 有关详细信息,请参阅适用于 .NET 的 ClickOnce

使用 Mage.exe 对应用程序清单和部署清单进行重新签名

  1. 打开“Visual Studio 命令提示符”窗口。

  2. 将目录更改为包含要签名的清单文件的文件夹。

  3. 键入以下命令,对应用程序清单文件进行签名。 将 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
    
  4. 键入以下命令以更新部署清单文件并对其签名,如前一步骤所示替换占位符名称。

    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
    
  5. (可选)将主部署清单 (publish\<appname>.application) 复制到版本部署目录 (publish\Application Files\<appname>_<version>)。

对应用程序清单和部署清单进行更新和重新签名

此过程假定你已对应用程序清单文件 (.manifest) 进行了更改,但还有其他文件已更新。 更新文件时,还必须更新表示该文件的哈希。

使用 Mage.exe 对应用程序清单和部署清单进行更新和重新签名

  1. 打开“Visual Studio 命令提示符”窗口。

  2. 将目录更改为包含要签名的清单文件的文件夹。

  3. 从发布输出文件夹的文件中删除 .deploy 文件扩展名。

  4. 键入以下命令,使用更新的文件的新哈希更新应用程序清单,并对应用程序清单文件进行签名。 将 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
    
  5. 键入以下命令以更新部署清单文件并对其签名,如前一步骤所示替换占位符名称。

    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
    
  6. 将 .deploy 文件扩展名添加回文件(应用程序和部署清单文件除外)。

  7. (可选)将主部署清单 (publish\<appname>.application) 复制到版本部署目录 (publish\Application Files\<appname>_<version>)。