Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 为什么安装程序在点击快捷方式后运行?_Wix_Windows Installer_Installation_Bootstrapper_Wixsharp - Fatal编程技术网

Wix 为什么安装程序在点击快捷方式后运行?

Wix 为什么安装程序在点击快捷方式后运行?,wix,windows-installer,installation,bootstrapper,wixsharp,Wix,Windows Installer,Installation,Bootstrapper,Wixsharp,我使用WixSharp为我的应用程序创建了一个简单的引导程序 namespace TestBootstrapper { class Program { static void Main() { var package = new MsiPackage("../testmsi.msi") { DisplayInternalUI = true,

我使用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
)。安装期间,事件查看器中没有错误。但当我点击快捷方式时,安装程序再次运行


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

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

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


在其他情况下,修复效果不太好。如果要删除已安装的文件,Windows将尝试还原该文件。如果您进行了按用户安装,但随后以另一用户身份登录,并尝试使用并非产品安装程序预期用途的应用程序,请按机器安装

安装程序正在运行,因为您已经创建了一个。您应该寻找一种方法来创建常规的、非广告的快捷方式。不幸的是,我对WiX一无所知,所以我不能告诉你怎么做。但如果我从.msi(作为管理员或标准用户)安装应用程序并单击快捷方式,应用程序将运行。我尝试使用InnoSetup和NSIS创建bootstapper,我也有同样的行为。