Inno Setup:记录注册表项创建

时间:2017-05-21 10:59:19

标签: inno-setup

我可以通过启动setup.exe /log=<log.txt>告诉Inno安装程序(尝试使用最新版本5.5.9)创建日志文件。

不幸的是,它似乎没有记录[Registry]部分中声明的注册表项的创建。如何告诉Inno安装程序还记录注册表项创建或原因未创建的原因?

1 个答案:

答案 0 :(得分:1)

无法让Inno Setup根据[Registry]部分自动记录操作。

但您可以使用BeforeInstall and AfterInstall parametersLog support function手动记录它们:

[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; \
  ValueName: "Test"; ValueData: "data"; \
  BeforeInstall: Log('Before writing Test value'); \
  AfterInstall: Log('After writing Test value');

自动记录注册表写入错误(如任何错误):

2017-05-21 16:57:51.652   Before writing Test value
2017-05-21 16:57:51.653   Message box (Abort/Retry/Ignore):
                          Error creating registry key:
                          HKEY_LOCAL_MACHINE\Software\My Company\My Program

                          RegCreateKeyEx failed; code 5.
                          Access is denied.

                          Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation.
2017-05-21 17:00:58.116   User chose Ignore.
2017-05-21 17:00:58.116   After writing Test value

如果您需要更好地控制日志记录,则需要使用Pascal Scripting(而不是[Registry]节条目)来写入注册表。但是你不能使用方便的Inno Setup Registry support functions,因为他们不会给你一个失败的原因。

您必须使用低级WinAPI函数。

一些参考文献: