使用 Inno Setup 修补 Install Shield 应用程序

发布于 2024-09-30 23:32:27 字数 252 浏览 0 评论 0原文

你好,我有一个问题,我需要一些指导。 我有一个旧的应用程序,它有一个安装防护安装程序,但我没有安装程序脚本。现在我想使用 Inno Setup 为该应用程序做一个简单的补丁。

我正在阅读文档,如果我知道 appId,我可以将新文件附加到同一安装中。但是我现在不知道该应用程序有什么 ID。我尝试了一个使用相同名称的简单脚本,但它也不起作用。

无论如何,是否要找到要附加到该安装的 appId?

有人可以指出我正确的方向,还是不可能做到这一点?

Hi I have a problem and I need some direction.
I have an old application that have an install shield installer, for which I don't have the installer scripts. Now I want to do a simple patch for that application using Inno Setup.

I was reading the documentation and if I knew the appId I could just append to the same installation the new files. However I don't now what Id that application have. I tried a simple script using the same name but it didn't work either.

Is it anyway of finding the appId to append to that installation?

Can someone point me in the right direction, or is not possible to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光匆匆的小流年 2024-10-07 23:32:27

简而言之,答案是否定的,您无法创建与以前的 Install Shield 软件包 100% 无缝的更新软件包。原因是,无论您是否知道 AppId,InnoSetup 都会将 _is 附加到指定用于添加到注册表的任何 AppId 的末尾。如果你问我的话,这是一个相当时髦的行为,但这就是世界的方式,我们不要忘记你正在处理一个免费的应用程序。他们有自己的推理,而且是合理的,只是目前对您的需求没有意义。

当遇到同样的情况时,你总是可以做我所做的:

  1. 找到原始安装的AppId。

    a.在控制面板下打开添加/删除程序。

    b.在列表中找到您的应用程序并记下名称。

    c.打开注册表编辑器。
    *免责声明:这可能会对您的系统产生不利影响,因此请小心

    d.打开以下注册表项:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

    e.单击您看到的第一个 GUID,然后根据您之前记下的名称检查右侧窗格中的 DisplayName 值。如果此值与您找到的 AppId 匹配 - 它就是您选择的 GUID。

    f.选择下一个 GUID,然后返回步骤 1e,直到找到匹配项。

  2. 使用此 AppId 作为您在 InnoSetup 中使用的 AppId,但在标题中添加“Update”一词。

  3. 构建并运行您的安装。

  4. 现在,您的应用程序的“添加/删除程序”中将有两个条目,但其中一个条目已明确标记为更新。您还完成了额外的工作,以确保 AppId 尽可能匹配,从而使其他程序更容易确定它们之间的相关性。

祝您一切顺利!

The short answer is no, you cannot create an update package that is 100% seamless to the previous Install Shield package. The reason being, whether you know the AppId or not, InnoSetup appends a _is to the end of any AppId given for adding to the registry. Quite a funky action if you ask me but it's the way of the world and let's not forget you're dealing with a free application. They had their reasoning and it is sound, just doesn't make sense for your needs at this point.

You can always do what I did when faced with the same situation:

  1. Find the AppId of the original installation.

    a. Under the Control Panel open Add/Remove Programs.

    b. Find your application in the list and make a note of the name.

    c. Open RegEdit.
    *DISCLAIMER: THIS COULD ADVERSELY AFFECT YOUR SYSTEM SO BE CAREFUL

    d. Open the following registry key: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

    e. Click on the first GUID you come to and check the value of DisplayName in the right pane against the name you took note of earlier. If this value matches you've found the AppId - it is the GUID you have selected.

    f. Select the next GUID and go back to step 1e until you have a match.

  2. Use this AppId as the AppId you use in InnoSetup but add the word "Update" to your title.

  3. Build and run your installation.

  4. Now you will have two entries in Add/Remove Programs for your application but one is clearly marked update. You've also done the additional leg work to ensure that the AppId is as much a match as possible making it easier for other programs to determine that they're related.

Best of luck in your endeavors!

冷夜 2024-10-07 23:32:27

修改 Inno Setup 脚本 (.iss) 以包含新文件或修改后的文件。更新脚本中的版本信息。
例如:[文件]
来源:“PathToUpdatedFile*”;目标目录:“{app}”;标志:recursesubdirs

[设置]
应用程序版本=2.0

Modify your Inno Setup script (.iss) to include the new or modified files. Update the version information in the script.
Eg : [Files]
Source: "PathToUpdatedFile*"; DestDir: "{app}"; Flags: recursesubdirs

[Setup]
AppVersion=2.0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文