在每台计算机安装期间安装每用户文件的正确方法

时间:2016-08-15 12:28:29

标签: wix windows-installer

我有一台每台机器的WiX安装程序(InstallScope =" perMachine" InstallPrivileges =" raise")我需要创建一个文件夹并将几个文件复制到Documents文件夹中每个运行应用程序的用户。目前我将文件安装到当前用户的个人文件夹中,但那是错误的,我收到了ICE91验证警告:

ICE91: The file 'SomeFile' will be installed to the per user directory 'SomeDir'
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.

我希望将文件自动复制到每个用户的Documents文件夹中。有人可以发布逐步说明如何做到这一点吗?

更新:我将在9月份休假,在此期间我将无法回复任何评论。

1 个答案:

答案 0 :(得分:4)

Windows Installer将执行此操作 - 它是广告快捷方式的功能。如果您将文件安装到用户特定的文件夹位置并且其他用户登录,则该用户将缺少该文件,并且广告快捷方式修复的修复机制将从原始MSI文件安装它。在您的情况下,PersonalFolder属性是用户的Documents文件夹。

要安排此操作,文件必须是组件的键路径,并且该组件必须位于具有通告快捷方式的功能中。使用快捷方式时,将检查组件和包含功能的自我修复"并安装了丢失的文件。这适用于尚不存在的用户。较旧的Office安装程序曾执行此操作以安装特定于用户的项目,例如模板。

MSI显然必须可以使用,并且没有机制在卸载时删除文件。

另一种选择(或者如果没有公布的快捷方式)是将代码添加到调用MsiProvideComponment(或等效的p / invoke)的应用程序,传递ProductCode,功能名称,组件ID(该文档文件)并使用INSTALLMODE_DEFAULT,如果文件丢失,将安装该文件:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370356(v=vs.85).aspx

并且它将丢失,因此将为之前未运行该应用程序的用户安装。