首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Inno安装卸载程序VersionInfo

Inno安装卸载程序VersionInfo
EN

Stack Overflow用户
提问于 2017-11-20 17:37:42
回答 2查看 622关注 0票数 3

我在安装程序中使用Inno安装程序。我对VersionInfo在unins000.exe中有一个问题。在安装程序中填充VersionInfo时,我使用了指令AppPublisherAppCopyright等,但它不影响安装卸载程序unins000.exe

Google和help对这个问题一无所知。我研究了Inno安装源,并找到了仅用于安装文件的附加VersionInfo:

代码语言:javascript
复制
        { Update version info }
        AddStatus(SCompilerStatusUpdatingVersionInfo);
        UpdateVersionInfo(ExeFile, VersionInfoVersion, VersionInfoProductVersion, VersionInfoCompany,
          VersionInfoDescription, VersionInfoTextVersion,
          VersionInfoCopyright, VersionInfoProductName, VersionInfoProductTextVersion);

        { For some reason, on Win95 the date/time of the EXE sometimes
          doesn't get updated after it's been written to so it has to
          manually set it. (I don't get it!!) }
        UpdateTimeStamp(ExeFile.Handle);
      finally
        ExeFile.Free;
      end;
    end;

    { Sign }
    if SignTools.Count > 0 then begin
      AddStatus(SCompilerStatusSigningSetup);
      Sign(ExeFileName);
    end;
  except
    EmptyOutputDir(False);
    raise;
  end;

但是我在卸载程序编译代码中找不到这个例程。

任何人都知道,是否有可能将版本信息放到unins000.exe

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-21 07:17:45

Inno安装程序不支持此设置。

您必须在编译时自己修改版本信息。

Imo,在卸载程序链接到安装程序之前访问其可执行文件的唯一方法是滥用SignTool“回调”。设置为SignTool的命令实际上可以对可执行文件执行任何操作,而不仅仅是“签名”它。但无论如何,它必须“签名”(Inno安装程序在“工具”完成后显式检查可执行文件是否已签名)。

您可以通过将SignTool设置为最终将运行实际signtool.exe的批处理文件(或其他脚本)来实现这一点,但在此之前,它将修改版本信息(例如使用资源黑客命令行)。

票数 1
EN

Stack Overflow用户

发布于 2017-11-30 02:51:10

不幸的是,接受的解决方案不能工作,因为SignTool“回调”不能以这种方式被滥用。深入了解Inno安装源代码,我发现编译器在对卸载可执行文件进行签名之后使用了下面是验证:

代码语言:javascript
复制
  { Sanity check: Remove the signature (in memory) and verify that
    the signed file is identical byte-for-byte to the original }

我找到了这个问题的快速解决办法。Inno安装程序使用Setup.e32文件作为uninst000.exe的模板。

因为Inno安装程序是完全可移植的-您可以为每个需要在卸载程序中拥有自定义版本信息的项目维护Inno安装二进制文件文件夹的单独副本(默认为%ProgramFiles%\Inno Setup 5\)。

您必须在Inno安装二进制文件的每个副本中修改Setup.e32文件的版本信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47397961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档