众所周知,在VS(Visual Studio)里面可以利用post build 进行一些类似于CMD或者批处理的操作。 最近的项目中用到了MicroSoft的SignTool工具,目的是要把一个数字签名签到一个.XAP(SilverLight编译后的文件)文件上。

背景: 由于数字签名将要过期,需要用新的签名替换之前的。信签名是从总公司的IT部门申请来的(xxx.pfx)文件,密码也是他们提供的。由于IT部门有密码保护的要求,密码要满足所谓的安全规则,IT部门同事将密码设置为带有“特殊字符” 的一个字符串 "_X%v?XXX^XX2" (X表示字母,在这里处于安全考虑,不方便把密码直接放出来:)),因而运行在post build 命令时会报错: Missing file ...

"$(ProjectDir)signtool" sign /f "$(ProjectDir)mysign.pfx" /p _X%v?XXX^XX2 "$(TargetDir)ClientApplication.xap"

解决方案: 查了下批处理的特殊字符,发现需要用使用%或者^来处理特殊字符(例如,在特殊字符%前面加上一个%来正确输出%),并且需要将含有特殊字符的字符串用""括起来。 修改后的post build命令如下:

"$(ProjectDir)signtool" sign /f "$(ProjectDir)mysign.pfx" /p "_X%%v?XXX^XX2" "$(TargetDir)ClientApplication.xap"

使用修改后的post build 命令再次编译,结果正确。。。  good job!!

另外附上一个关于处理批处理特殊字符的链接,希望有所帮助:http://www.hackbase.com/tech/2009-09-27/56481.html

VS 2012: Post build 中使用 Signtool.exe,对于特殊password中字符的处理方法的更多相关文章

  1. Java中出现“错误: 编码GBK的不可映射字符”的解决方法

    我的java文件里出现中文,是这样一个文件: import java.io.*; public class Test { public static void main(String[] args) ...

  2. Excel中将字符串中从右起第n个指定字符替换的方法

    比如你想把www.baidu.com.cn中的倒数第二个”.”替换成@,则可以用: =SUBSTITUTE(A1,".","@",LEN(A1)-LEN(SUB ...

  3. AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)

    使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...

  4. SignTool.exe(签名工具)

    水漂收集 -- SignTool.exe(签名工具) =============C#.Net 篇目录============== 签名工具是一个命令行工具,用于用证书对文件进行数字签名,验证文件和时间 ...

  5. signtool.exe not found

    When check the [sign the Xap File] checkbox, build project failed due to signtool.exe not found. Fol ...

  6. 如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码

    如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码 1.Delphi编译方式介绍: 当我们在开发一个常规应用程序时,Delphi可以让我们用两种方式使用VCL,一种是把VCL中的申明 ...

  7. Qt界面中嵌入其他exe程序的界面,使用Qt5

    下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/4 ...

  8. Delphi中如何将 Exe 程序或其他资料打包在内,使用时再释放使用(转)

    1.生成一个rc文件,文件格式如下: rname exefile "test.exe" //rname是资源名称 //exefile是资源类型 //text.exe是资源 资源类型 ...

  9. Notepad++中调用cl.exe编译器(Windows)

    Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...

随机推荐

  1. URL中“#” “?” &“”号的作用

    URL中"#" "?" &""号的作用   阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twit ...

  2. Centos 7.0查看硬盘使用情况 命令

    查看硬盘使用情况 df -hl [root@localhost ~]# df -hl文件系统         容量    已用    可用    已用%.     挂载点/dev/sda3       ...

  3. thinkphp 3.2 视图模型 实例 视图查询结果 二维数组 合并

    使用视图模型查询的时候 结果是这样的 array(6) { [0] => array(5) { ["picTitle"] => string(7) "标题2& ...

  4. js实现点击增加文本输入框

    html代码: <ul id="ulid21" > <li id="li11" >问卷选项设置:</li> </ul& ...

  5. [MongoDB]入门操作

    摘要 在工作中也经常使用mongodb,每次遇到新的操作都需要去查,比较麻烦,准备在博客中系统的学习一下mongodb.首先在本地安装mongodb环境,可以下载一个windows的版本. 官网地址 ...

  6. linux的bash 终端操作快捷键

    bash中的快捷键操作: 分为两大类, 一是移动, 另一个是删除 一. 移动 1. 按字符移动: ctrl+f, ctrl+b 3. 按行移动: ctrl+a, ctrl+e 二. 删除: 1. 按字 ...

  7. jquery submit()不执行

    好吧我承认我竟然犯低级错误了...我忏悔...为了提醒自己置顶一个礼拜 <form id="form" method="post"> <inp ...

  8. 使用Minify来优化网站性能

    Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏览器的 ...

  9. Mysql InnoDB行锁实现方式

    Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...

  10. 在Mac mini上编译Android源码

    参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...