【发布时间】:2013-10-22 09:42:55
【问题描述】:
我正在尝试使我的设置同时支持每用户和每台机器的安装。 我希望用户通过单选按钮从 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' 值而不是 'administrator' 或 'user' 执行。
另外,如何根据这个选择指定要执行的自定义操作?
【问题讨论】:
-
我认为这可能是范围问题。尝试公开 ADXLoaderPrivileges 属性,即全部大写:ADXLOADERPRIVILEGES。
-
感谢您解决了问题
-
@BdN3504,将你的答案塑造成一个“答案”,以便作者能够接受它。
-
那么这个自定义操作的第二个问题呢?我应该编辑我的问题还是问另一个问题?