在安装过程中,我想将长多行/段落的文本写入注册表值
写入注册表值很容易
[注册表] 根:HKCU;子键:“软件\我的公司\我的软件”; ValueType:string; ValueName:“消息”; ValueData:“some text”
但我宁愿定义一个多行文本常量来替换“some text”
即。
之类的东西Root:HKCU;子键:“软件\我的公司\我的软件”; ValueType:string; ValueName:“消息”; ValueData:#mytext
我可能很沉闷,但我看不出怎么做 - 任何帮助都非常感激。感谢
答案 0 :(得分:2)
使用简单变量应该有效。
#define mytext "some long text value\r\ngoing onto another line"
[Registry] Root: HKCU; Subkey: "Software\my company\My software"; ValueType: string; ValueName: "Message"; ValueData: "{#mytext}"
但是,将ValueType: string
写入Windows中的注册表意味着您正在编写REG_SZ
。 \r\n
将在注册表值中显示为文本。大多数注册表工具不支持REG_SZ
值中的回车。他们只会显示字符。
您必须自己在使用该注册表值的程序中处理它。一些例子here。
如果符合您的要求,更好的解决方案是告诉inno使用REG_MULTI_SZ
和ValueType: multisz
。 REG_MULTI_SZ是一个由空字符串(\ 0)终止的以空字符结尾的字符串序列。使用inno multisz
的类型值,您可以使用名为{break}
的特殊常量来嵌入换行符。有关用法,请参阅documentation。