- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 WiX 标记指示 MSI 安装程序从包含的 DLL 调用自定义操作:
<CustomAction Id="CA_SetProperties_Finalize"
Property="CA_OnInstallFinalize"
Value="[Installed],[REINSTALL],[UPGRADINGPRODUCTCODE],[REMOVE]" />
<CustomAction Id='CA_OnInstallFinalize'
BinaryKey='CADll'
DllEntry='msiOnInstallFinalize'
Execute='deferred' Impersonate='no' />
<InstallExecuteSequence>
<Custom Action='CA_SetProperties_Finalize'
Before='InstallFinalize'></Custom>
<Custom Action='CA_OnInstallFinalize'
After='CA_SetProperties_Finalize'></Custom>
</InstallExecuteSequence>
<Binary Id='CADll' SourceFile='Sources\ca-installer.dll' />
并且 DLL 本身具有以下用于自定义操作的 C++ 代码:
#pragma comment(linker, "/EXPORT:msiOnInstallFinalize=_msiOnInstallFinalize@4")
extern "C" UINT __stdcall msiOnInstallFinalize(MSIHANDLE hInstall)
{
//Do the work
if(doWork(hInstall) == FALSE)
{
//Error, cannot continue, display end-user message...
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Error cannot continue!"));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR + MB_OK), hRecord);
return ERROR_INSTALL_FAILURE;
}
return ERROR_SUCCESS;
}
如您所见,最终用户消息是硬编码的。在我实际的 WiX 标记中,我使用本地化 .wxl 文件作为字符串:
<Property Id="ARPCONTACT" Value="!(loc.ContactInfo)" Secure="yes" />
然后,例如,lang_en-us.wxl
文件将是:
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="ContactInfo">To get hold of me yell out of the window...</String>
</WixLocalization>
所以我很好奇,有没有什么方法可以从我的 C++ 自定义操作代码中的 .wxl 文件访问这些本地化字符串?
最佳答案
您可以通过自定义操作访问 Windows Installer 数据库和 session 表。要访问的公共(public)表是 Properties 表。
如您所知,WiX 将为其构建 .msi 的每种文化构建具有本地化值的数据库表。所以,是的,可以访问本地化字符串,例如,作为属性值。
(但是,不,自定义操作不能直接从 .wxl 文件中读取它们,除非您以不同的方式使用 .wxl。项目中的 .wxl 文件通常不包含在安装程序中,除非作为单独的本地化字符串引用替换。)
换句话说,您可能想多了。只需设置和使用具有本地化值的属性即可。
关于c++ - 我可以通过 WiX 的自定义操作访问 .wxl 本地化文件中的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823564/
我有以下 WiX 标记指示 MSI 安装程序从包含的 DLL 调用自定义操作: 并且 DLL 本身具有以下用于自定义操作的 C++ 代码: #pragma comment(lin
我使用 WiX 创建的安装程序通过 .wxl 文件进行了本地化。在 WiX 中可以指定多种文化,并且 light.exe 将被多次调用,为每种语言创建一个安装程序(这在从 Visual Studio
我是一名优秀的程序员,十分优秀!