WiX安装程序:安装到Appdata - 错误ICE38,ICE64& ICE91

时间:2013-09-05 14:03:05

标签: wix windows-installer wix3.7

我一直在撞击这个人一段时间,我终于陷入困境(经过大量的搜索)并且已经堆叠溢出来寻求帮助。

正如标题所示,我正在尝试创建一个安装程序,可以执行每用户安装而无需任何提升权限。

但是,以下代码会在编译时生成大量ICE38和ICE64错误以及ICE91警告。

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="AppDataFolder">
        <Directory Id="AppRootDirectory" Name="[Manufacturer]">
          <Directory Id="INSTALLFOLDER" Name="[ProductName]" />
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="ProductFeature" Title="ATestProject" Level="1">
      <ComponentGroupRef Id="modules" />
    </Feature>

“modules”是指heat.exe生成的.wxs文件的内容,其组件安装目录为“INSTALLFOLDER”

互联网上提供的解决方案显示我的modules.wxs文件的大量编辑以使其工作,这是不可接受的 - 此版本过程中有超过1000个文件以及任何不能自动化(在构建时或在脚本的命令行上完成)是完全不可能的

提前致谢!

1 个答案:

答案 0 :(得分:6)

您可以设置每用户安装,默认情况下,在Windows 7及更高版本中,通过执行以下操作安装到%localappdata%\ Programs;

<Property Id="ALLUSERS" Secure="yes" Value="2"/>
<Property Id="MSIINSTALLPERUSER" Secure="yes" Value="1" />

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="AppRootDirectory" Name="Manufacturer">
      <Directory Id="INSTALLFOLDER" Name="ProductName" />
    </Directory>
  </Directory>
</Directory>
<!-- ... -->
<!-- ... -->
<Feature Id="ProductFeature" Title="ATestProject" Level="0">
  <ComponentGroupRef Id="modules" />
</Feature>

基本上在顶部设置两个属性会将安装程序配置为“每用户”安装,这对UAC友好且不需要提升权限。 有关详细说明,请参阅This

另请注意,ProgramFilesFolder变为%localAppData%/ programs - Microsoft的每个用户应用程序的默认存储位置并安装到用户配置文件而不是C:\ Program Files(x86)\