如何在 MSI 的日志中隐藏 customactiondata 的值?
How to hide the value of customactiondata in logs of MSI?
我有一个延迟的自定义操作,它使用 Customactiondata 获取 属性,它包含不应在日志中显示的密码值。
使用的打包工具:WIX
用 C++ 编写的自定义操作
我已经尝试了以下解决方法,但似乎没有任何效果。
将 属性 和 CA 名称标记为隐藏
Hidetarget = CA 定义中的是
需要做什么?
代码:
<CustomAction Id="CASETLOGINFORRCSERVICES" Return="check" HideTarget="yes" Execute="deferred" Impersonate="no" TerminalServerAware="no" DllEntry="SetLoginForRCServices" BinaryKey="CA_Dll" />
日志:
MSI (s) (7C:CC) [18:35:39:011]: Executing op: CustomActionSchedule(Action=CASETLOGINFORRCSERVICES,ActionType=3073,Source=BinaryData,Target=SetLoginForRCServices,CustomActionData=Deps@@@151232323)
MSI (s) (7C:B0) [18:35:39:038]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSIEB69.tmp, Entrypoint: SetLoginForRCServices
将 HideTarget="Yes" 添加到自定义操作。
MsiHiddenProperties: 有一个 属性 你可以设置隐藏 属性 值不被写入日志:MsiHiddenProperties property(其中有进一步的链接指向有关防止 MSI 中的机密信息的更多信息)。
自定义操作: 为自定义操作设置属性HideTarget="yes"
将为您设置以上 属性 值。但是,此功能似乎并未隐藏日志中 属性 table 中 hard-code 的任何值 - 因此,如果您在 [=] 中为 属性 设置实际值94=] table 您还需要将 属性 本身设置为隐藏(您可以通过编程方式或通过 GUI 设置一个值,而无需在 属性 table 中设置)。以下是样本:
HideTarget="Yes"
:
<CustomAction Id="ReadProperyDeferred" HideTarget="yes" ... />
Property Hidden="yes"
:
<Property Id="MYPROPERTY" Hidden="yes" Secure="yes">Text</Property>
示例:此处示例 WiX 源代码:https://github.com/glytzhkof/WiXDeferredModeSample.
这是延迟模式的另一个示例 - 它使用 DTF class CustomActionData 轻松将属性发送到延迟模式:https://github.com/glytzhkof/WiXDeferredModeSampleDTF
记得尽可能避免自定义操作:
敏感信息:这是关于防止敏感或不需要的信息进入您的 MSI 的答案:
代码摘录: 更喜欢打开上面的示例。但是,这是延迟模式自定义操作从 set-property 自定义操作检索数据所需的 WiX 构造的“压缩”序列:
<Property Id="MYPROPERTY" Hidden="yes" Secure="yes">Send this text to deferred mode</Property>
<Binary Id="CustomActions" SourceFile="$(var.CustomActionSample.TargetDir)$(var.CustomActionSample.TargetName).CA.dll" />
<CustomAction Id="SetProperty" Return="check" Property="ReadProperyDeferred" Value="[MYPROPERTY]" />
<CustomAction Id="ReadProperyDeferred" HideTarget="yes" BinaryKey="CustomActions" Execute="deferred" DllEntry="TestCustomAction" />
<InstallExecuteSequence>
<Custom Action='SetProperty' Before='InstallInitialize'></Custom>
<Custom Action='ReadProperyDeferred' Before='InstallFinalize'></Custom>
</InstallExecuteSequence>
链接:
- How can I automate testing an MSI is installable with UAC?
我有一个延迟的自定义操作,它使用 Customactiondata 获取 属性,它包含不应在日志中显示的密码值。
使用的打包工具:WIX
用 C++ 编写的自定义操作
我已经尝试了以下解决方法,但似乎没有任何效果。
将 属性 和 CA 名称标记为隐藏
Hidetarget = CA 定义中的是
需要做什么?
代码:
<CustomAction Id="CASETLOGINFORRCSERVICES" Return="check" HideTarget="yes" Execute="deferred" Impersonate="no" TerminalServerAware="no" DllEntry="SetLoginForRCServices" BinaryKey="CA_Dll" />
日志:
MSI (s) (7C:CC) [18:35:39:011]: Executing op: CustomActionSchedule(Action=CASETLOGINFORRCSERVICES,ActionType=3073,Source=BinaryData,Target=SetLoginForRCServices,CustomActionData=Deps@@@151232323)
MSI (s) (7C:B0) [18:35:39:038]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSIEB69.tmp, Entrypoint: SetLoginForRCServices
将 HideTarget="Yes" 添加到自定义操作。
MsiHiddenProperties: 有一个 属性 你可以设置隐藏 属性 值不被写入日志:MsiHiddenProperties property(其中有进一步的链接指向有关防止 MSI 中的机密信息的更多信息)。
自定义操作: 为自定义操作设置属性HideTarget="yes"
将为您设置以上 属性 值。但是,此功能似乎并未隐藏日志中 属性 table 中 hard-code 的任何值 - 因此,如果您在 [=] 中为 属性 设置实际值94=] table 您还需要将 属性 本身设置为隐藏(您可以通过编程方式或通过 GUI 设置一个值,而无需在 属性 table 中设置)。以下是样本:
HideTarget="Yes"
:
<CustomAction Id="ReadProperyDeferred" HideTarget="yes" ... />
Property Hidden="yes"
:
<Property Id="MYPROPERTY" Hidden="yes" Secure="yes">Text</Property>
示例:此处示例 WiX 源代码:https://github.com/glytzhkof/WiXDeferredModeSample.
这是延迟模式的另一个示例 - 它使用 DTF class CustomActionData 轻松将属性发送到延迟模式:https://github.com/glytzhkof/WiXDeferredModeSampleDTF
记得尽可能避免自定义操作:
敏感信息:这是关于防止敏感或不需要的信息进入您的 MSI 的答案:
代码摘录: 更喜欢打开上面的示例。但是,这是延迟模式自定义操作从 set-property 自定义操作检索数据所需的 WiX 构造的“压缩”序列:
<Property Id="MYPROPERTY" Hidden="yes" Secure="yes">Send this text to deferred mode</Property>
<Binary Id="CustomActions" SourceFile="$(var.CustomActionSample.TargetDir)$(var.CustomActionSample.TargetName).CA.dll" />
<CustomAction Id="SetProperty" Return="check" Property="ReadProperyDeferred" Value="[MYPROPERTY]" />
<CustomAction Id="ReadProperyDeferred" HideTarget="yes" BinaryKey="CustomActions" Execute="deferred" DllEntry="TestCustomAction" />
<InstallExecuteSequence>
<Custom Action='SetProperty' Before='InstallInitialize'></Custom>
<Custom Action='ReadProperyDeferred' Before='InstallFinalize'></Custom>
</InstallExecuteSequence>
链接:
- How can I automate testing an MSI is installable with UAC?