我可以通过启动setup.exe /log=<log.txt>
告诉Inno安装程序(尝试使用最新版本5.5.9)创建日志文件。
不幸的是,它似乎没有记录[Registry]
部分中声明的注册表项的创建。如何告诉Inno安装程序还记录注册表项创建或原因未创建的原因?
答案 0 :(得分:1)
无法让Inno Setup根据[Registry]
部分自动记录操作。
但您可以使用BeforeInstall
and AfterInstall
parameters和Log
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函数。
一些参考文献: