如何让我的安装程序应用程序在 Windows 上正常运行?

2024-01-14

我在 Delphi 中制作了一个简单的安装程序应用程序,没什么花哨的。基本上我将文件包含到 Exe 中,然后将它们解压到用户指定的路径。

然而,我偶然发现了一个问题,我注意到这适用于任何 Windows 可执行文件,无论它是否是安装程序。

如果一个 Exe 被命名,或者在文件名中包含以下单词,“Setup”、“Build”、“Install”,也许还有其他单词,那么......每当应用程序运行和关闭时,Windows 都会弹出一个“产品兼容性助手”对话框,说应用程序可能没有正确安装。

这是一个问题,因为即使我的安装程序中的文件实际上已提取,并且在我看来安装程序已完成其工作,Windows 仍在抱怨它。

我对此的唯一想法是 Windows 必须在执行时检查应用程序的文件名,在本例中已将其识别为安装程序。然后 Windows 必须在系统上设置一个标志或其他内容,然后我的安装程序必须更新此标志以表示安装成功?

从 IDE 调试时,Windows 不会抱怨这一点,因此它不能与代码相关,它必须是操作系统 - 这仅在从 Windows 启动应用程序时发生,而不是 Delphi。

您可以轻松尝试此操作,创建一个应用程序或将其重命名为Setup.exe,运行它然后关闭它 - 等待几秒钟,将显示“产品兼容性助手”对话框。

我不知道从哪里开始调查如何停止此对话框,也不知道在哪里可以设置告诉 Windows 安装程序已正确完成。

感谢您的想法和解决方案,谢谢。


如果我没记错的话,当您的安装应用程序不包含应用程序清单时,就会发生这种情况。引入 UAC 后,MS 为安装人员引入了启发式检测并显示 UAC 提升对话框。启发式检查诸如 setup.exe、install.exe 之类的名称。简单的解决方案是包含应用程序清单。如果它是一个安装程序,您可能想使用requireAdministrator环境。

该功能称为安装者检测,并进行了讨论here http://technet.microsoft.com/en-US/library/00d04415-2b2f-422c-b70e-b18ff918c281.aspx.

无论如何,我总是会使用专用安装工具(例如 InnoSetup)构建安装程序。

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

如何让我的安装程序应用程序在 Windows 上正常运行? 的相关文章

  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • pip install ecos 错误,显示“需要 Microsoft Visual C++ 14.0”。 [复制]

    这个问题在这里已经有答案了 我正在尝试使用 pip install 在我的 anaconda 中安装 fancyimpute 但错误显示由于 需要 Microsoft Visual C 14 0 而无法安装 ecos 提供的链接已过期 有谁
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • rvm编译安装ruby 2.5.0出错

    我正在尝试使用 rvm 安装 ruby 2 5 0 但出现错误 我在 Ubuntu 18 16 和现在的 Linux Mint Cinnamon 上尝试过 基本上我在运行安装 ruby 的代码之前所做的是 打开 GPG 密钥https rv
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 调试器异常错误和内存超调

    我尝试运行以下代码 但它显示有关内存地址的错误 并显示一条消息 循环后 n 可能未定义 请看一看 var n max integer n integer r R1 f h0 Array of Real const h 0 00889 nip
  • TColorProperty德尔福柏林10.1.2?

    我正在尝试将组件从 Delphi 7 转换为 Delphi Berlin 平面组件 https sourceforge net projects flatstyle https sourceforge net projects flatst
  • 是否可以声明长度受限且不从 0/1 开始的字符串类型?

    在 Delphi 中 可以声明整数值的子范围 例如 type myInt 2 150 它将 myInt 类型的值限制为 2 到 150 之间的值 但是如果我想限制字符串的长度怎么办 如果我写 type myString string 150
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 如何使用 FieldDefs 在运行时创建新的 SQLite 文件和表?

    我正在使用 Delphi Seattle 在全新的 SQLite 文件中创建一个全新的表 并且仅使用 FieldDefs 和非可视代码 我可以使用 ExecSQL CREATE TABLE 语法创建一个表 但不能如下所示 我得到 没有这样的
  • 如何使用 Visual Studio 将文件版本嵌入 MSI 文件中?

    我的 C 程序有一个安装项目 该安装项目的属性中有一个版本 我希望生成的 MSI 文件嵌入此版本 这样我就可以在资源管理器中将鼠标悬停在该文件上并查看该文件的版本 我用的是VS2008 我怎样才能做到这一点 如果您只是将 版本 1 5 0
  • 防止多个实例 - 但还要处理命令行参数?

    我正在从我的应用程序处理与 Windows 相关的扩展文件 因此 当您在 Windows 中双击文件时 它将执行我的程序 然后我从那里处理该文件 如下所示 procedure TMainForm FormCreate Sender TObj
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • logback的“谨慎模式”是如何实现的?

    The 审慎模式 http logback qos ch manual appenders html prudentlogback 中的序列化所有 JVM 之间的 IO 操作 写入同一文件 可能运行在不同的主机上 在其他日志记录框架中 如果
  • 如何在Delphi中将对象方法作为参数传递,然后调用它?

    我担心这可能是一个有点愚蠢的问题 但这让我很难过 我正在寻找将对象的方法传递到过程中的最简单的方法 以便过程可以调用对象的方法 例如 超时后 或者可能在不同的线程中 所以基本上我想 捕获对对象方法的引用 将该引用传递给过程 使用该引用 从过
  • H2161 重复资源[一个VCL项目可以有2个类名相同但命名空间不同的表单吗?]

    我尝试在 2 个不同的命名空间中创建具有相同类名的 2 个表单 FirstNameSpace ExampleFormName TExampleFormName SecondNameSpace ExampleFormName TExample
  • 如何读取和更改 TEdit 控件的值?

    我有一个表格TForm1有 5TEdit and 2 TBitBtn 我还需要该程序 以便在输入数字数据后Edit1 and Edit2 on BitBtn1Click Edit1 and Edit2值将被求和并显示在Edit3 你想做这样

随机推荐

  • Bash 命令查看 dir 中是否有文件 - 测试目录是否为空[重复]

    这个问题在这里已经有答案了 我有以下 bash 脚本 if ls Users david Desktop empty gt dev null then echo yes files else echo no files fi 如果目录中有一
  • 检测整数内的单个一位流

    我必须检查一个号码是否满足以下条件 在二进制中 所有一位必须是连续的 该数字必须至少设置一位 连续的一位可能从 MSB 开始或在 LSB 结束 因此如果该数字由单个一位流后跟零位流组成 则完全有效 反之亦然 我编写了一个代码来检查现实问题的
  • 身份视图在哪里?

    当我在 NET Core 2 1中创建新项目时 我找不到 Identity Account Manage后面的视图 它在哪里 现在如何更改页面样式 这些视图现在是预编译库的一部分 Microsoft AspNetCore Identity
  • PHP SoapClient 类型映射的行为不同

    我有一个 Web 服务函数 它将一组项目返回给 PHP 客户端 根据项目的数量 PHP 返回类型有所不同 如果函数返回一项 则 PHP 类型为stdClass如果函数返回多个项目 则 PHP 类型为array 无论哪种情况都应该是array
  • 更改 ng-repeat 内的角度 ui-view

    我在单个控制器中使用多个命名的 ui 视图 当使用以下代码在 html 文件中命名 ui view 时 一切都按预期工作 div class box div div div div div div div div div div div 但
  • 将 CUDA 与 Visual Studio 2017 结合使用

    我正在尝试安装 CUDA 但收到一条消息 未找到支持的 Visual Studio 版本 我认为这是因为我使用的是 Visual Studio 2017 社区 而 CUDA 目前仅支持 Visual Studio 2015 不幸的是 微软不
  • 使用 Velocity 模板语言的类型化 React 函数组件模板

    我正在使用 Webstorm 作为我的 IDE 它允许我突出显示一些 JSX 并将组件提取为功能组件 支持此功能的代码位于我不熟悉的 VTL 中 当我提取这样的组件时
  • flutter中的new_version包返回RangeError(index):无效值:有效值范围为空:1

    我在 flutter 中使用 new vesrion 0 3 1 包来显示警报对话框 如果 flutter 应用程序商店中有新版本可用 则显示更新应用程序 但我收到以下书面异常 ERROR flutter lib ui ui dart st
  • 无法让 Tensorflow 在 macOS M1 Pro 芯片上运行

    我一直在尝试进入 ML 领域 并且想学习相关课程 但它需要 Tensorflow 而且我一直在尝试让它在我的系统上运行 我有 2021 款 14 16GB Macbook Pro 配备 M1 Pro 芯片 并且运行的是 Ventura 13
  • 检测到的 JDK 版本:1.6.0-24 不在允许范围 1.7 内

    当我运行命令时 mvn clean package 我收到错误 Detected JDK Version 1 6 0 24 is not in the allowed range 1 7 如何修复上述错误 我尝试检查安装的jdk版本并得到了
  • django模型管理添加表单卡住了

    考虑一下这个 admin register Personal site admin site class PersonalAdmin admin ModelAdmin form ChangePersonalForm add form Add
  • 正则表达式匹配额外的空组

    我是正则表达式领域的新手 我下面发布的所有内容都是我的代码中的简化示例 我有一根绳子 比方说test 1 some 2 foo bar 4 我想替换为title test 1 title some 2 title foo title bar
  • 如何在 MVC 4 中不指定表单区域

    我有一个 MVC 应用程序 其中配置了区域 注销链接出现在布局页面中 因此它会显示在每个页面上 当我单击注销时 它总是将其附加到它所在的区域中 我只想让它转到帐户 注销 无区域 我尝试了以下方法 但没有成功 有什么建议吗 using Htm
  • WPF richTextBox问题

    如果一行文本换行到另一行 如何以编程方式确定字符串中的断点 示例 输入字符串 这是对文本换行行的测试 Based on the width of the richTextBox it could display This is a test
  • 如何在 Blazor 中将 AuthorizeView 标记与自定义身份验证逻辑结合使用

    我在 Blazor 服务器应用程序中有一个自定义身份验证系统 具有自定义数据库和一些逻辑 我希望受益于 razor 中内置的 AuthorizeView 标签 但我不知道如何在没有 AspNetCore Identity 的情况下使用它 现
  • Openssl:在 SSL_CTX_load_verify_locations API 中使用 CApath 参数时证书验证失败

    我正在尝试与服务器计算机建立 TLS 连接 我已使用 openssl CLI 命令创建了根 CA 证书和服务器证书 我创建了服务器证书 其通用名称与其 IP 地址相同 根 CA 证书的通用名称是服务器的 FQDN 我正在使用 openssl
  • JAX-RS 2.0 WebSphere 8.5 没有独立的共享库

    我正在使用 Jersey 2 在 IBM WebSphere 8 5 环境中实现 JAR RS 2 0 读完这篇文章后Websphere 8 中的 JAX RS Jersey 2 10 支持 https stackoverflow com
  • ASP.NET MVC - MapRoute 与 paths.Add(和 404)

    我刚刚开始使用 ASP NET MVC MapRoute 和 paths Add 之间有什么区别 我应该只使用 MapRoute 吗 我可以绘制多条路线吗 哪些 地图 优先 您首先调用的还是最后调用的 我希望能够为用户做一些类似于 Stac
  • 在共享主机上使用 Laravel 发送邮件

    我正在尝试从我的网站发送邮件 我正在使用 laravel 5 5 和 hostnet nl 的共享托管 我非常确定我的所有配置都是正确的 我的 env MAIL DRIVER mail MAIL HOST smtp02 hostnet nl
  • 如何让我的安装程序应用程序在 Windows 上正常运行?

    我在 Delphi 中制作了一个简单的安装程序应用程序 没什么花哨的 基本上我将文件包含到 Exe 中 然后将它们解压到用户指定的路径 然而 我偶然发现了一个问题 我注意到这适用于任何 Windows 可执行文件 无论它是否是安装程序 如果