我在设置项目中寻找卸载的替代方法(在阅读this时)并尝试了以下操作,但遗憾的是失败了:
我在C#中为虚拟应用程序创建了一个Setup Project。我在其构建中添加了输出,并在其中添加了一个Uninstall.bat文件:
echo %1
msiexec /x %1
然后我在快捷方式的Arguments字段中添加了[Product Code]
该文件的快捷方式:
我的理由是,将使用产品代码(已解决)作为参数调用Uninstall.bat。
设置完毕后,没有骰子,参数不会从快捷方式传递给安装程序。命令窗口的输出是:
ECHO is on. msiexec /x
%1
参数似乎不存在。在二进制编辑器中查看LNK文件,产品代码似乎存在。
这里发生了什么?
进一步尝试各种论点和简单的回声:
[Product Code]
- >忽略{%hardcodedProductCode%}
- >传递给批处理为%1
[Product Name]
- >忽略Constant [Product Code]
- >常量仅作为%1
[Product Name] Constant [Product Code]
- >常量仅作为%1
传递给批处理,而不是%2
[Product Name] Constant [Product Code] [UndeclaredVariable123]
- >常量仅作为%1
$[Product Code]
- > $
仅作为%1
第五个例子表明,如果常量碰到位置1,变量会被忽略。
答案 0 :(得分:3)
首先,为什么要添加$?
参数在方括号中定义。
设置[ProductCode]或[PRODUCTCODE]
它应该工作,所有vs参数都是一个单词,它们没有空格,没有$符号。