在perMachine WiX安装项目

时间:2016-05-16 13:54:14

标签: wix windows-installer

我正在使用WiX Toolset v3.10.2构建MSI设置文件。我正在使用 InstallScope ='perMachine',因此程序安装在 Program Files 文件夹中。

但是,我需要将一个(设置)文件安装到当前用户的Application Data Roaming文件夹中。

<Directory Id="AppDataFolder">
    <Directory Id="ManufacturerAppDataFolder" Name="Manufacturer">
        <Directory Id="ProductAppDataFolder" Name="ProductName">
            <Component Id="AppDataConfig" Guid="643DB270-8D85-467B-A6BA-9A54924655E0" Feature="MainApplication">
                <RemoveFolder Id='RemoveProductAppDataFolder' Directory='ProductAppDataFolder' On='uninstall' />
                <RemoveFolder Id='RemoveManufacturerAppDataFolder' Directory='ManufacturerAppDataFolder' On='uninstall' />
                <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Name="UserConfigLocation" Value='[ProductAppDataFolder]' KeyPath='yes' />
                <File Source="Files\user.settings" />
            </Component>
        </Directory>
    </Directory>
</Directory>      

我正在运行 light.exe

时收到此警告
warning LGHT1076 : ICE91: The file 'user.settings' will be installed
to the per user directory 'ProductAppDataFolder' that doesn't vary based
on ALLUSERS value. This file won't be copied to each user's profile even
if a per machine installation is desired.

我正在Windows 10 PC的管理员用户(“FirstUser”)上安装MSI,并且设置文件已正确安装在

C:\用户\ FirstUser \应用程序数据\漫游\生产\名称\ user.settings

如果我登录其他用户帐户(“SecondUser”),则会在

处显示新的设置文件

C:\用户\ SecondUser \应用程序数据\漫游\生产\名称\ user.settings

但是,在我登录管理员帐户(“FirstUser”)后运行卸载程序后,设置文件仅从FirstUser的AppData文件夹中删除。不会删除SecondUser的AppData文件夹中的设置文件,它将保留在磁盘上。

在Application Data文件夹中安装文件的正确方法是什么,因此它是为每个用户创建的,并且在卸载时也为每个用户删除了?

1 个答案:

答案 0 :(得分:2)

看起来你已经以正确的方式做了这件事。卸载无法可靠地枚举所有其他配置文件以删除数据。另见:

https://blogs.msdn.microsoft.com/oldnewthing/20070917-00/?p=25103/

如果剩下的文件很重要,可以选择重新设计应用程序。每个用户的设置可以在每个机器位置的DB或Xml文件(作为示例)中,在卸载时可以将其删除(假设它未被升级)。

您收到警告是因为ICE测试是静态的 - 他们不知道安装是针对每个用户还是针对每台机器。它的措辞很糟糕 - 这意味着每台机器 install 不会将文件安装到每个用户的目录版本中。