为什么单击快捷方式后安装程序会运行?

时间:2018-07-11 14:17:51

标签: wix windows-installer installer bootstrapper wixsharp

我使用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),并且在安装过程中Event Viewer中没有错误。当我单击快捷方式时,该应用程序将按预期运行。

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

我以标准用户身份登录并安装了该应用程序(使用Installer.exe)。安装过程中Event Viewer中没有错误。但是,当我单击快捷方式安装程序时,它将再次运行。

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

1 个答案:

答案 0 :(得分:1)

这是一项维修,根据重新安装的部件而定,它的好坏是可能的。应用程序事件日志应具有MsiInstaller条目,其中包含有关要修复的内容的信息。这不一定是一件坏事,需要预防。

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

在其他情况下,修复效果也不佳。如果您执行某些操作来删除已安装的文件,则Windows将尝试还原该文件。如果您是按用户安装,然后以其他用户身份登录,然后尝试使用该产品非预期用途的应用-每台计算机安装一次安装。