Wix Toolset中Value内嵌双引号

最近在使用Wix Toolset v3为我写好的程序穿件打包安装程序时。想要在安装时写一个注册表。这个时候就发现一个很正常的需求把我挡住了:

“我需要在键值中写入双引号”

一般的,对于经常写代码的同学来说:这是基础知识,并不难啊!转义字符加上不就行了,像这样:\”。天真的我也是这么想的,然后:

第一段是在资源管理器右键菜单加上一个选项,名为:”Copy Here”
<RegistryValue Id="EXPLORERRIGHTMENU" Action="write" Root="HKCR" Key="Directory\Background\shell\CopyEveryWhere" Value="Copy Here" Type="string" />
点击之后会执行下面第二段Value属性定义的命令:

“xcopy /E /V /C /Q /H /Y \”[INSTALLFOLDER]*\” %v.\”。
即复制我安装目录的所有文件到当前根目录

<RegistryValue Id="EXPLORERRIGHTMENUCOMMAND" Action="write" Root="HKCR" Key="Directory\Background\shell\CopyEveryWhere\command" Value="xcopy /E /V /C /Q /H /Y \"[INSTALLFOLDER]\" %v.\" Type="string" />

[INSTALLFOLDER]这里举例来说指向目录: C:\Program Files\MyTool
由于命令行中参数存在空格时,正确的识别必须加上双引号。所以就有了此次踩坑记

然后编译

各种出错

错误原因

实际上Wix ToolSet编译器由于并不识别转义字符\,于是把: “xcopy /E /V /C /Q /H /Y \”认为是Value的值。后面的: [INSTALLFOLDER]\” %v.\” Type=”string”对于Wix ToolSet编译器来说自然就不认识,所以才会报错。

解决方案

对于我这种英语渣来说,看官方手册仅仅是为了找使用方法,但是像这种问题我一直也没找着哪里在说怎么用
经过各种查找,终于在SourceForge上面发现了Wix的一个Bug report,Bug Reporter上传了一份附件,看里面里面的源码才发现了这个哭笑不得的用法:

<RegistryValue Id="EXPLORERRIGHTMENUCOMMAND" Action="write" Root="HKCR" Key="Directory\Background\shell\CopyEveryWhere\command" Value='xcopy /E /V /C /Q /H /Y "[INSTALLFOLDER]" %v.' Type="string" />

发现了吗?在单引号里面使用双引号就可以了,不需要转义字符。

参考链接

SourceForge上的Wix ToolSet Bug报告
在Windows资源管理器中添加一个菜单项

被开发组的机智感动哭了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值