【问题标题】:MSI Installer revert the modified installation files if application starts with other user如果应用程序与其他用户一起启动,MSI 安装程序将恢复修改后的安装文件
【发布时间】:2020-12-14 09:43:26
【问题描述】:

我有一个场景, 在特定机器上,我正在使用 MSI 安装程序安装我的自定义软件。 MSI 安装程序是使用PerMachine 标签创建的,因此该机器的所有用户都可以使用该软件。 现在,

  1. 我将软件安装在 C:\MyApp\ 目录下。
  2. 然后我修改了 C:\MyApp\Config 文件夹中的一些配置文件,以确保软件与我的其他服务连接。
  3. 我启动了应用程序,它运行良好。

现在,在同一台机器上,我用另一个用户登录。

  1. 我启动了应用程序。
  2. MSI 窗口会弹出一些安装进度条。
  3. 它消失了,应用程序启动但加载失败。
  4. 但是我修改的所有文件现在都恢复了,我需要再次修改。

几点:

  1. 我的安装目录是 C:\MyApp,而不是任何自定义用户目录。因此,修改后的文件应该适用于所有用户。
  2. 我认为当我使用新用户登录时 MSI 正在回滚更改。

如何阻止这种情况?

请帮忙

【问题讨论】:

    标签: wix windows-installer wix3.5


    【解决方案1】:

    自我修复Windows Installer self-repair 是您看到的行为的原因。有关发生情况的说明,请参阅链接。 See more here - 多个链接,从各个角度提供自我修复信息。

    简短说明:本质上,广告快捷方式的启动会触发已安装文件的完整性检查,如果发现文件或注册表设置缺少自修复随之而来。它将放置丢失的文件和设置。在此过程中,它有时会覆盖更改的设置文件 - 您描述的问题(由于各种 file overwrite oddities of Windows Installer - 带有各种提示的长答案)。

    修复?:我的首选修复方法是不安装设置文件并更新它们,而是让您的应用程序在第一次启动时生成它们 - 任何一个每个用户的文件或所有用户共享的文件。您还可以使用您安装的设置文件的只读副本来复制到您生成和更新的新文件。我还建议您将这些文件放在用户配置文件中的可写位置,而不是放在主文件夹中。您的设置永远不会干扰这些生成的文件。您也可以尝试为文件“永久”和“永不覆盖”设置托管组件。不是很整洁。 Here is a whole rant on the subject。在我看来,最好的解决方案是将设置保存在数据库中并在启动时获取它们。这样可以很好地控制所有设置。注意网络和防火墙问题。

    我希望这能回答您的问题。你在安装 IIS 文件吗?我发现commercial tool Advanced Installer 有更好的 IIS 安装功能列表 - 尽管我缺乏足够的数据来得出结论。这里有一些视频:https://www.youtube.com/c/advancedinstaller/search?query=IIS - WiX 也非常好,但没有 Advanced Installer 的漂亮 GUI。

    注意:你真的不应该将任何东西安装到 C:\ 的根目录。 Windows Installer 积极尝试使其变得困难,并且可能会产生副作用。但是,您可以将 IIS 文件夹作为目标 - 无论它们位于何处。

    更新I found this old answer 关于如何允许选择性更新设置文件 - 我不得不重新启用 the linked forum answers from Wayback

    【讨论】:

    • 感谢您的详细回答。这有助于我正确理解问题,但我遇到了一个更奇怪的场景,我在另一台 Windows 10 笔记本电脑上运行相同的安装并按原样执行上述场景,但文件不会为其他用户恢复,尽管第一次出现一些 MSI 进度条但文件未还原。
    • 对上述问题有一些意见,文件被还原为仅第一次运行应用程序的新用户创建的文件,如果我们卸载了产品,再次安装并通过管理员用户修改文件,然后使用相同的其他用户登录,其中文件已还原,现在文件未还原。
    • 您为安装这些文件的组件设置了什么键路径?是文件路径还是注册表路径?
    猜你喜欢
    • 2021-07-03
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多