我正在尝试使我的设置支持每用户和每台机器的安装。我希望用户通过单选按钮从 UI 中选择是按用户还是按机器安装软件,并根据该选择选择不同的自定义操作和要复制的不同文件。
我发现我可以使用 util:XmlFile 元素来更改一些基于安装范围不同的文件,但问题是这个组件是在 UI 更改属性之前运行的。以下是代码片段:
<Property Id='ADXLoaderPrivileges' Value='bla' />
<Directory Id="TARGETDIR" Name="SourceDir">
<Component Id="adxloader.dll.manifest" Guid="51FC65CB-BEAD-4423-A840-49C9CB22E191">
<File Id="adxloader.dll.manifest" Source="$(var.ExcelProjectDir)\Loader\adxloader.dll.manifest" DiskId="1" KeyPath="yes" />
<util:XmlFile Id="ModifyAdxLoaderManifest" Action="setValue"
ElementPath="/configuration/loaderSettings/@privileges" File="[TARGETDIR]\adxloader.dll.manifest" Value="[ADXLoaderPrivileges]" />
</Component>
</Directory>
<Dialog Id='AllUsersChoice' X='50' Y='50' Width='373' Height='287' Title='[ProductName]' TrackDiskSpace='yes'>
<Control Id='NextButton' Type='PushButton' X='300' Y='261' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}&Next >' TabSkip='no' Default='yes'>
<Publish Property='TARGETDIR' Value='[%ProgramFiles]\Manufacturer\ProductName\'><![CDATA[ALLUSERS=2]]></Publish>
<Publish Property='TARGETDIR' Value='[%APPDATA]\Manufacturer\ProductName\'><![CDATA[ALLUSERS=1]]></Publish>
<Publish Property='ADXLoaderPrivileges' Value='administrator'><![CDATA[ALLUSERS=2]]></Publish>
<Publish Property='ADXLoaderPrivileges' Value='user'><![CDATA[ALLUSERS=1]]></Publish>
</Control>
</Dialog>
文件根据 ALLUSERS 属性值安装在文件夹中,但 XmlFile 使用“bla”值而不是“管理员”或“用户”执行。
另外,如何根据此选择指定要执行的自定义操作?