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

2023-12-26

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

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


这是一次修复,效果可能好也可能坏,具体取决于重新安装的内容。应用程序事件日志应包含 MsiInstaller 条目,说明正在修复的内容。这并不一定是一件需要预防的坏事。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么安装程序在单击快捷方式后运行? 的相关文章

  • 在 Windows 中安装 RubyGems

    我是红宝石新手 我尝试按照网站中给出的步骤在我的电脑上安装 Ruby Gemshttp rubygems org pages download http rubygems org pages download 我从上述站点下载了软件包 将目
  • 如何在 QT 安装程序框架中区分每用户安装与系统范围安装?

    我正在使用一些名为 pgModeler 的应用程序 它的当前版本提供了一个基于 QT 安装程序框架的安装程序 Windows 上该安装程序的问题是它安装每个用户的开始菜单条目 https github com pgmodeler pgmod
  • 如何将 .NET Framework 3.5 和其他先决条件添加到 InstallShield 项目

    我可以在 InstallShield 2009 中创建安装文件 我不知道如何将 NET Framework 3 5 和其他先决条件添加到 InstallShield 项目中 我在 installshield2009 中创建了 install
  • WiX Installer:获取正在升级的产品版本

    在从版本 X 到版本 Y 的主要升级过程中 我需要一个属性 变量来表明版本 X 正在升级 当使用 WiX Installer 构建的安装程序对产品进行主要升级时 是否有办法获取正在升级的版本号 假设您使用 WiX Majorupgrade
  • Google Cloud SDK 安装程序无法在 Windows 7 上完成组件安装

    在安装过程中我收到一条消息 不幸的是 组件安装没有成功完成 请检查详细日志以获取错误消息 我尝试安装到所有用户 单个用户 许多目的地和名称 Details 输出文件夹 C Program Files x86 Google Cloud SDK
  • 作曲家创建项目 symfony/骨骼 new_project“4.0”

    它安装 Symfony 4 1 3 内核 src 环境 dev 调试 true 如何让它准确安装 4 0 composer create project symfony skeleton new project 4 0 Installing
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • 为什么我的应用程序会触发另一个应用程序的安装程序?

    当使用旧版 VB6 应用程序并在该应用程序中打开某些特定表单时 会弹出属于 Microsoft Navision 安装在同一台计算机上 的 Windows Installer 如附图所示 每次都会发生这种情况 但仅限于这台机器 VB6应用程
  • 使用 numpy.distutils.core.setup 之前安装 numpy

    我在用numpy distutils设置具有 fortran 模块的包 mypackage 问题是如果我这样做pip install mypackage在没有 numpy 的环境中 出现以下错误 ModuleNotFoundError 没有
  • 安装引导程序如何检测是否安装了先决条件?

    试图解决这个问题 https stackoverflow com questions 2591384 bootstrapper setup exe says net 3 5 not found but launching msi direc
  • Windows7上python3.5无法安装BeautifulSoup4

    我已经从下载了 beautifulsoup4 4 5 3 tar gzhttps www crummy com software BeautifulSoup bs4 download 4 5 https www crummy com sof
  • Visual Studio 2010 与 SQL Server 2012 商业智能的正确安装顺序

    我有一个 Windows 7 64 位 旗舰版 虚拟机 想要安装以下内容 Visual Studio 2010 Ultimate SQL Server 2012 Business Intelligence with SSIS and SSR
  • 将引导程序与 MSI ui 一起使用

    我有可以安装的 MSI 文件 它包含一个定制的 UI 还收集用户的数据 作为安装的一部分 如果缺少的话我想安装以下内容 Net框架4 0 Microsoft Visual C 2010 可再发行组件包 x64 据我所知 引导程序也应该包含
  • 安装后如何执行Wix自定义操作?

    我正在使用 Wix3 将 WCF 服务安装到 IIS 安装完成后如何使用我的自定义操作 c 函数 即我需要打开已安装的 web config 文件并将主机名替换为真实的主机名 有任何想法吗 您可以安排在之后安装完成 http wix sou
  • WiX:如何立即重新启动explorer.exe?

    我是软件打包方面的初学者 我正在使用 cpack Wix 我试图找到有关的有用信息或良好文档util 重启资源 但找不到我的问题的任何答案 Issue 我必须安装一个 ShellExtension 它需要在设置一些注册表值后重新启动 exp
  • 良好的 WiX 编辑器 [重复]

    这个问题在这里已经有答案了 我目前正在开发一个使用 WiX 创建 MSI 的项目 我过去在 Sourceforge 上使用 WiXEdit 来管理包含在 WiX 项目中的文件 因为它比直接操作 XML 稍微容易一些 但它仍然有点笨重 有谁知
  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do
  • Netbeans 未安装在 MacOS Big Sur 上

    我已在 MacBook Air 上安装了 Big Sur Java 已安装 但 Netbeans 安装显示未找到 Java JDK 有人有这个问题的解决方案吗 我通过安装 JDK15 和 Apache Netbeans 12 2 仅限 12
  • MAMP Pro 3“安装失败。”

    我刚刚购买了 MAMP Pro 3 的升级版 下载了文件 MAMP MAMP PRO 3 0 5 pkg 并继续安装 不幸的是 经过三次尝试 我无法完成安装 文件被写入 最后我收到一条错误消息 安装失败 安装程序遇到错误 导致安装失败 请联
  • 重新缓存的 msi 仍在运行旧的自定义操作

    我已对 msi 文件中的自定义操作进行了更改 以便在服务停止或停止挂起时不尝试停止 Windows 服务 但是 在使用 msiexec fv mymsi msi 重新缓存 msi 后 当运行到下一个版本的主要升级 其中也有更正的服务停止自定

随机推荐

  • 我不断收到类型错误

    好吧 我正在自学 python 类 当我运行代码时 出现以下错误 class Critter object A virtual pet def init self name mood print A new critter has been
  • 使用批处理文件在 Windows 中生成 GUID

    如何在 Windows 中使用命令行运行的批处理文件中生成 GUID Windows SDK 附带了一个名为uuidgen 如果您有 Visual Studio 您将拥有 Windows SDK 并且需要运行Visual Studio 命令
  • WPF - 从 ItemsControl 的 ItemTemplate 内绑定到项目索引?

    有没有办法从 ItemsControl 的 ItemTemplate 中绑定到 ItemIndex 例如
  • 向 Ruby 数组添加回调函数,以便在添加元素时执行某些操作

    我想向 Ruby 数组添加回调函数之类的东西 这样当将元素添加到该数组时 就会调用该函数 我能想到的一件事是重写所有方法 如 有更简单的解决方案吗 以下代码仅调用size changed当数组大小发生更改并且传递数组的新大小时挂钩 a cl
  • 如何为继承的槽定义 S4 原型

    我有一个基类 我们称之为 A 其表示对于许多其他类来说是通用的 因此我定义了其他类 例如 B 来包含这个类 我想设置这些其他类 B 的原型以包含从 A 继承的插槽的默认值 我认为这是很自然的 setClass A representatio
  • SAS 错误消息(致命:在 MISSING 涂片生成期间检测到代码生成错误)

    有谁知道这个错误消息是什么意思 致命 在 MISSING smear 生成期间检测到代码生成错误 它是在连接大约 40 个数据集时发生的 我相信这可能是由于变量太多 大约 217 而达到了内存限制 但最好能得到这一点的确认 日志档案 301
  • jstree 自定义节点标记

    有没有办法拥有自定义标记或向某些节点添加额外的 html 元素 例如 我们想在路径下的所有节点的节点文本后面添加一个箭头 链接 当用户单击该箭头时 打开上下文菜单 我知道可以使用右键单击打开上下文菜单 但要求是在节点后面有一个箭头 并且单击
  • 应用程序退出时关闭模态视图控制器

    我有一个视图控制器 视图 A 当用户按下按钮时呈现模态视图 B 并且视图 B 本身有一个按钮来呈现视图 C 我的问题是 如果用户在视图 B 或如图 C 所示 下次启动应用程序时将出现相同的视图 有没有办法在退出时关闭视图 B 和 C 或在应
  • 如何在网站上预览用户要上传的视频文件(PHP、FiileAPI JS)

    我的意思是 当用户从系统中选择视频文件时 网页已经向他们显示他们想要上传的文件 我已经使用 FileAPI JS 使用图像文件进行预览 我想对视频文件的 FileAPI JS 做同样的事情 所以 它必须在我的客户端内工作 谢谢并感谢您的回答
  • 导入错误:导入 mechanize 时没有名为“_version”的模块

    我通过 pip 安装 mechanize 并在导入模块时收到错误 python Python 3 5 2 default Jun 28 2016 08 46 01 GCC 6 1 1 20160602 on linux Type help
  • 登录后重定向到原始任务

    因此 我想向用户发送电子邮件 其中包含一些链接 您可以单击这些链接来执行操作 但如果用户尚未登录 我希望能够让用户登录 然后将他重定向回他想要达到的目标 我在 application controller rb 中有这些方法 这在 URL
  • strtotime('today') 返回错误的时间?

    我正在尝试创建一个从用户当前日期开始的选择列表 我希望将其设置为 unix 时间戳格式的午夜 这就是我正在做的一切 today strtotime today echo today 这是我的结果 1333144800 即 2012 年 3
  • 在强类型视图中格式化可为 null 的 DateTime 字段

    我的模型中有一个 Person 类 其 BornDate 属性定义为 DisplayName Born Date public DateTime BornDate get set 在我看来 我将此字段用作 td br td 问
  • 阴影 UIview 和 ClipsToBounds

    我想将阴影设置为我的容器 UIView 我用这段代码来实现它 id initWithCoder NSCoder aDecoder self super initWithCoder aDecoder if self gt drop shado
  • 如何将 Visual Studio Code 连接到 Visual Studio Team Services

    我最近下载了 Visual Studio Code 并试图弄清楚如何将编辑器连接到我的 Visual Studio Team Services 项目 有人在这方面取得过成功吗 首先下载 Visual Studio 团队服务 https ma
  • jQuery 中元素在 DOM 中的相对位置

    给定两个 jquery 对象 是否有某种方法可以告诉我哪个在文档树中比另一个 更靠前 换句话说 通过一个文档 p p div p p div p p 是否有一些函数具有这样的行为 p1 isBefore p2 true p3 isBefor
  • “不包含适合入口点的静态‘main’方法”

    我不明白下面的代码有什么问题 当我尝试编译时 我收到消息 不包含适合入口点的静态 main 方法 这是我的代码 using System using System Collections Generic using System Compo
  • 需要使用 PHP 在 Ubuntu 上查找网络接口的 IP 地址

    我需要帮助查找我的计算机在网络上时的 IP 地址 我正在构建一个信息亭类型的系统 该系统将被放置在不同的位置 并且我需要能够使用网络浏览器在本地网络上查找该计算机的 IP 地址 如果我使用 SERVER SERVER ADDR 我通过该计算
  • 在约束依赖于框架的自定义视图中使用自动布局

    我正在编写一个以编程方式初始化的自定义视图 我覆盖updateConstraints添加此视图所需的所有约束 void updateConstraints self superview addConstraint NSLayoutConst
  • 为什么安装程序在单击快捷方式后运行?

    我使用 WixSharp 为我的应用程序创建了一个简单的引导程序 namespace TestBootstrapper class Program static void Main var package new MsiPackage te