WiX 安装程序 : Installing to Appdata - Error ICE38, ICE64 和 ICE91

标签 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 文件进行了大量编辑以使其正常工作,这是 Not Acceptable - 在这个发布过程中有超过 1000 个文件,任何不能自动化的(在构建时在命令行或使用脚本完成)都是完全不可能的 .

提前致谢!

最佳答案

您可以设置每用户安装,默认情况下在 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)\的默认存储位置

关于WiX 安装程序 : Installing to Appdata - Error ICE38, ICE64 和 ICE91,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638473/

相关文章:

wix - Visual Studio 2010 beta 2 和 WiX?

user-interface - 使用 WiX 如何根据属性更改禁用/启用控件?

logging - 默认情况下使用 WIX 启用 MSI 日志记录

.net - WindowsIdentity.GetCurrent() 从自定义操作运行时返回 SYSTEM

Wix 安装程序 - 如何在安装路径中显示 [Manufacturer] 的值?

wix - Windows Installer XML 变量 'WixUICostingPopupOptOut' 在多个位置声明。请删除其中一项声明

c# - 我怎么知道exe的安装路径?

c# - 如何使用 C# 打开文件(安装程序)

wix - 如何在 SendTo 文件夹中为所有 WiX 用户创建快捷方式?

wix - 在 Bootstrap 期间在 Msi 包之间执行脚本