【问题标题】:Why installer runs after click on shortcut?为什么安装程序在单击快捷方式后运行?
【发布时间】:2018-07-11 14:17:51
【问题描述】:

我使用 WixSharp 为我的应用程序创建了一个简单的引导程序。

namespace TestBootstrapper
{
    class Program
    {
        static void Main()
        {
            var package = new MsiPackage("../testmsi.msi")
            {
                DisplayInternalUI = true,
                Id = "MyId",
                Compressed = true,
                Visible = true
            };

            var bootstrapper = new Bundle("MyTestInstaller", package)
            {
                Version = new Version("1.0.0.0"),
                UpgradeCode = new Guid("1FCC927B-7BB0-4FB0-B81E-2D87012E470B"),
                PreserveTempFiles = true,
                DisableModify = "yes",
                DisableRemove = true
            };

            bootstrapper.Build("Installer.exe");
        }
    }
}

我以管理员身份登录并安装了应用程序(使用 Installer.exe),安装期间事件查看器中没有错误。当我单击快捷方式时,应用程序按预期运行。

如果我以标准用户或管理员身份运行testmsi.msi,它安装时没有任何错误,如果我点击快捷方式,应用程序将按预期运行。

我以标准用户身份登录并安装了应用程序(使用Installer.exe)。安装期间事件查看器中没有错误。但是当我点击快捷方式安装程序再次运行。

那么,为什么安装程序会运行以及如何防止这种行为?

【问题讨论】:

  • 安装程序运行是因为您创建了一个advertised shortcut。您应该寻找一种方法来创建一个常规的、非广告的快捷方式。不幸的是,我对 WiX# 一无所知,所以我不能告诉你如何去做。 Here is a tutorial to create a non-advertised shortcut using pure WiX code.
  • 但是如果我从 .msi 安装应用程序(作为管理员或标准用户)并单击应用程序运行的快捷方式。我尝试使用 InnoSetup 和 NSIS 来创建引导程序,但我有同样的行为。

标签: wix windows-installer installation bootstrapper wixsharp


【解决方案1】:

这是一种修复,可能好坏取决于重新安装的内容。应用程序事件日志应该有 MsiInstaller 条目,说明正在修复的内容。这不一定是需要预防的坏事。

假设您进行了每台计算机的安装,如果您从 MSI 将一个文件(例如)安装到用户的应用程序数据文件夹中,然后您以另一个用户身份登录并运行该应用程序,那么该文件显然丢失了对于那个用户。因此,Windows Installer 将为应用程序的缺失部分进行安装。系统的所有用户可能都需要该文件,是吗? Windows 假定如果您将文件(或注册表项)安装到用户配置文件位置,那么登录的每个人都需要此文件,因此当另一个用户登录并使用快捷方式时,它会通过“修复”安装。

还有其他一些修复不太好的情况。如果您执行某些操作来删除已安装的文件,那么 Windows 将尝试恢复它。如果您进行了按用户安装,但随后以其他用户身份登录并尝试使用不是产品预期用途的应用程序 - 每台机器的安装程序都可以执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2010-10-19
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多