我有一个配置文件,需要在每个服务器的基础上进行更改,以便一旦服务器安装了我们的软件,客户端安装程序的配置文件就会设置为与该服务器的特定设置,然后复制到Web上的公用文件夹进行部署。Mage.exe部署问题
由于我正在更改配置文件,我还必须重新生成* .manifest和* .application文件,而据我所知,我唯一真正的选择是使用Win7 SDK中的Mage.exe 。为了修复* .manifest文件与修改的配置文件中的正确散列,我运行:
mage -new应用程序-fd“。\ Application Files \ < appName> _1_0_0_0”-ToFile“。\ Application Files \ _1_0_0_0 \ < APPNAME> .exe.manifest” -Name “< APPNAME>” -Version “1.0.0.0” -CertFile “key.pfx” -password “<密码>”
,然后,以固定* .application文件与来自修改的* .manifest文件的正确散列,我运行:
mage -new部署-I t -t“< appName> .application”-v“1.0.0.0”-appManifest“应用程序文件\ < appName> _1_0_0_0 \ < appName> .exe.manifest“-pu”http:// < hostaddress>/< path>/Application Files/< appName> _1_0_0_0/< appName> .exe.manifest“-CertFile”key.pfx “-password”“
现在,这一切正常,我收到消息,文件已成功签署。当我尝试虽然安装客户端应用程序,这是显而易见的事情出了错时,我得到一个错误日志与消息:
+ Deployment manifest is not semantically valid.
+ Deployment manifest requires <deployment> section.
在看*。应用文件,它根据一些附加信息“部署”节点,从VS2008的发布功能,直接在同一文件没有:
<deployment install="true">
<subscription>
<update>
<expiration maximumAge="0" unit="days" />
</update>
</subscription>
<deploymentProvider codebase="http://<hostaddress>/<path>/Application Files/<appName>_1_0_0_0/<appName>.exe.manifest" />
</deployment>
的VS2008发布的版本只是有:
<deployment install="true" />
当我删除了附加信息并将部署节点设置为自行终止节点,然后重新签名该文件,一切都按预期工作。
这是一个已知问题,并且有没有任何方法让Mage在部署节点中没有额外信息的情况下创建文件,以便它能正常工作?
编辑:作为一种临时解决方案,我将文件加载到一个XmlDocument并修改它们以适应,然后重新签名这些文件。另外,我现在面临的问题是仍然无法确定如何将图标添加到展开,因此“开始”菜单项获取的图标不是通用图标。
我有一个非常类似的用例类似的问题。如果我找到解决方案,我会回复。 – 2010-02-23 03:49:11
只需使用标准 – 2013-12-20 11:01:29
Nathan的-appc标志,查看我的答案,看看它是否对您有所帮助。使用Mage.exe应该适合你。 – 2014-08-28 17:01:58