我有一个正常工作的WiX安装程序可以正确地将属性写入某些INI文件,这样可以正常工作,但我需要从计算机名称中动态生成INI文件的名称,例如
MACHINE(XXX)的.ini
其中xxx是我的电脑名称。
我尝试了各种各样的属性组合,但我似乎无法让它工作。有谁能把我弄好吗?
这是我最近的尝试不起作用:
<Property Id="MACHINEINI" Value="MACHINE([%COMPUTERNAME]).ini" />
...
<IniFile Id="IniPermissions"
Directory="MYDIR"
Action="addLine"
Name="[MACHINEINI]"
Section="[ComputerName]"
Key="Permissions"
Value="TEST" />
我从未看到MACHINEINI的值,因为创建的文件名实际上被称为
[MACHINEINI]
它写入的值是正确的,所以我看到的内容如下:
[xxx]权限= TEST
(其中xxx是我的机器名称)
我尝试使用[ComputerName],[COMPUTERNAME],[%COMPUTERNAME]
当我构建安装程序时,出现以下错误:
C:\ Source \ blah \ BLAH.wxs(50):警告CNDL1077:'MACHINEINI'Pro perty在其值中包含'[COMPUTERNAME]',这是非法的 引用其他财产。如果此值是字符串文字, 不是属性引用,pl轻松忽略此警告。设置一个 具有另一个属性值的属性,使用CustomAction 属性和值属性。
答案 0 :(得分:2)
基础Windows Installer表不支持此功能。请注意,FileName列的类型为FileName。只有格式化类型才能使用[属性]。
您可能需要自定义操作才能将临时记录写入IniFile表以转换文件名。与使用自定义操作逐字写入INI文件相比,优势在于可以自动为您处理回滚。
由于我不知道您想用什么语言编写自定义操作,因此无法告诉您如何完成此操作。
更简单的方法(从安装程序的角度来看)是将[KEY]名称转换为单个INI,而不是写入不同的INI文件。