WIX,MSI-installer。
我在我的登录名为developer
的某台计算机上构建此MSI。在我的MSI中,我有这样的对话窗口:
但第三个变体总是包含developer
用户名,即使当前用户有其他登录名......我该如何解决?
这是我对这些元素的代码:
<Control Id="rbgrPath" Type ="RadioButtonGroup"
X="5" Y="80" Width="500" Height="100" Property="INSTALLFOLDER">
<RadioButtonGroup Property="INSTALLFOLDER">
<RadioButton
Text="[$(var.PLATFORMPROGRAMFILESFOLDER)]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[$(var.PLATFORMPROGRAMFILESFOLDER)]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="5"/>
<RadioButton
Text="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="20"/>
<RadioButton
Text="$(env.AppData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="$(env.AppData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="35"/>
</RadioButtonGroup>
</Control>
UPD
这是PLATFORMPROGRAMFILESFOLDER
变量定义:
答案 0 :(得分:4)
这是因为在构建程序包时会评估rdlAvailability
和其他预处理程序字符串。在碰巧使用C:以外的系统驱动器的机器上(或者在不使用C:\ ProgramData的较旧的希望不支持的系统上),第二个单选按钮的值也将不正确。所以你应该使用运行时属性替换:
$(env.AppData)
应替换为$(env.ProgramData)
[CommonAppDataFolder]
应替换为$(env.AppData)
或[AppDataFolder]
[LocalAppDataFolder]
未解析为[$(var.PLATFORMPROGRAMFILESFOLDER)]
或[ProgramFilesFolder]
,则可能会更改为[ProgramFiles64Folder]
。请注意,只要您从上面引用的属性设置其值,就可以使用其他目录属性来引用这些位置。