当前位置: 首页 > 知识库问答 >
问题:

如何从Inno Setup外部访问Inno Setup安装程序的路径?

浦思源
2023-03-14

根据文档,Inno Setup使用AppName或AppId允许您创建一个更新程序,该程序将自动将其文件放在用户安装初始应用程序的同一路径中。

我需要能够根据AppId确定Inno Setup将文件安装到哪里,但不是从Inno Setup中。例如,我需要能够从Python脚本中确定这一点。

一个用例:修补安装程序位置中的文件。打包整个安装程序只是为了有条件地添加或编辑文本文件中的一行是矫枉过正的。一个简单的 Python 脚本可以完成此操作,而且用户可以根据需要查看脚本。我不能也不应该假设用户只是安装到默认位置,因此我需要能够看到用户安装程序的位置。

InnoSetup显然将其存储在某个地方,因为它可以制作自己的补丁,但我似乎在注册表中找不到它。我在注册表中搜索了我的应用ID,但我只在卸载部分看到它。我可能可以从那里下载它,但我认为您也可以在没有卸载程序的情况下创建安装程序-在这种情况下,结果会是什么?

共有1个答案

万高畅
2023-03-14

路径存储到注册表中的HKLM(管理安装模式)或HKCU(非管理安装模式,以AppId命名的子项,带有_is1后缀,存储在项SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下。值名称为Inno Setup:App Path。路径还存储到带有附加斜杠的InstallLocation,因为Windows从中读取路径。但Inno Setup读取第一个值。

< code>HKLM的示例:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\appid_is1]
"Inno Setup: App Path"="C:\\Program Files\\My Program"
"InstallLocation"="C:\\Program Files\\My Program\\"

您可以在几十个问题中看到这一点,这些问题显示了如何读取Inno安装代码中的值。例如:
使用Inno Setup安装mod/插件时,如何从注册表获取目标游戏/应用程序的安装路径?

 类似资料:
  • 我尝试做的一个例子可以在这里找到,但它使用的是GCE。 谢谢

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复

  • 我一直在努力从本地主机和外部连接到postgresql容器。 这是一个非常好的演示,它在https://linuxhint.com/postgresql_docker/.下面是docker compose。yml,postgres:12.2和pgadmin通过它进行集装箱化和运行。事实上,在运行docker compose之后。yml文件(由docker compose up-d编写)它们可以工作

  • 问题内容: 为什么我不能从ReactJS的“外部”访问组件方法?为什么不可能,有什么办法解决呢? 考虑一下代码: 问题答案: React通过attribute提供了一个您要尝试执行的操作的接口。给组件分配一个,其属性将是您的自定义组件: 注意 :仅根据下面的文档,如果子组件被声明为类,则此方法才有效:https : //facebook.github.io/react/docs/refs-and-

  • 问题内容: 我正在尝试远程监控在docker中运行的JVM。配置如下所示: 机器1:在ubuntu机器上的docker中运行JVM(以我为例,运行kafka);本机的IP为10.0.1.201; 在docker中运行的应用程序位于172.17.0.85。 机器2:运行JMX监视 请注意,当我从机器2运行JMX监视时,它会失败,并显示以下错误(注意:当我运行jconsole,jvisualvm,jm