gle*_*roo 5 parameters installer custom-action wix
我有一个旧的WiSE安装程序的DLL,我正在尝试使用WiX,所以我很确定DLL可以与基于MSI的安装程序一起使用.
这是我的定义:
<Binary Id="SetupDLL" SourceFile="../Tools/Setup.dll" />
<CustomAction Id="ReadConfigFiles" BinaryKey="SetupDLL" DllEntry="readConfigFiles" />
Run Code Online (Sandbox Code Playgroud)
和用法:
<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="ReadConfigFiles" Order="3">1</Publish>
Run Code Online (Sandbox Code Playgroud)
我的C++函数如下所示:
extern "C" UINT __stdcall ReadConfigFiles(MSIHANDLE hInstall, CHAR * szDirectory)
Run Code Online (Sandbox Code Playgroud)
我在哪里可以传递参数?
您无法直接传递参数,因为为了使其工作,您的函数必须以恰当的足迹导出.当你调用readConfigFiles你的自定义动作DLL时,它应该有这样的足迹:
extern "C" UINT __stdcall readConfigFiles(MSIHANDLE hInstaller);
Run Code Online (Sandbox Code Playgroud)
您可以使用该hInstaller参数从MSI中读取属性.用途MsiGetProperty():
HRESULT GetProperty(MSIHANDLE hInstaller, LPCWSTR property, LPWSTR value, DWORD cch_value) {
UINT err = MsiGetProperty(hInstaller, property, value, &cch_value);
return (err == ERROR_SUCCESS ? S_OK : E_FAIL);
}
Run Code Online (Sandbox Code Playgroud)
然后确保在.wxs文件中设置属性:
<Property Id="YOUR-PROPERTY-NAME">your-property-value</Property>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4580 次 |
| 最近记录: |