在传统的Visual Studio部署项目安装程序中,传递指定值的命令行参数TARGETDIR
允许我覆盖默认安装位置(我的大多数安装都是在没有用户交互的情况下进行的,因此大量使用命令行自动化).但是,我得到的印象是WiX(默认情况下)TARGETDIR
用于不同的东西.虽然我可以(并且将会)更新我们的命令行工具来更改参数名称,但仍然需要手动触摸所有现有的安装(非常重要的工作).
有没有办法通过指定TARGETDIR
而不破坏任何东西来覆盖WiX包中的安装位置?
Ada*_*son 27
在进行了更多的挖掘之后,看起来我以前的经验是VSDPROJ(以及可能的InstallShield)特有的行为的结果,而且WiX符合Windows Installer.
正如我在此链接中发现的那样,TARGETDIR
实际上应该代表具有最多可用空间的驱动器的根(假设有多个).这就是为什么WiX项目将目录嵌套在Program Files等下面的原因.Visual Studio实际上添加了一个自定义操作,将该属性覆盖到完整的安装路径.
通过做两件事,我能够完成我想要的任务:
TARGETDIR
而不是INSTALLFOLDER
(WiX放在那里的默认目录)TARGETDIR
属性的值设置为安装路径,假设没有从命令行传入.为此,我在<Product>
标签下添加了这个:
<CustomAction Id="SetTARGETDIR" Property="TARGETDIR"
Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
Execute="firstSequence" />
Run Code Online (Sandbox Code Playgroud)
这在<InstallExecuteSequence>
标签内:
<Custom Action="SetTARGETDIR" Before="CostFinalize">TARGETDIR=""</Custom>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24550 次 |
最近记录: |