5
我從舊的WiSE安裝程序中獲得了一個DLL,我試圖在WiX中工作,所以我非常確定該DLL可以與基於MSI的安裝程序一起工作。WiX - 將參數傳遞給CustomAction(DLL)
這裏是我的定義:
<Binary Id="SetupDLL" SourceFile="../Tools/Setup.dll" />
<CustomAction Id="ReadConfigFiles" BinaryKey="SetupDLL" DllEntry="readConfigFiles" />
與用法:
<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="ReadConfigFiles" Order="3">1</Publish>
我的C++函數如下:
extern "C" UINT __stdcall ReadConfigFiles(MSIHANDLE hInstall, CHAR * szDirectory)
我究竟哪裏可以傳遞參數?
&cch_value是緩衝區的長度(如果別人想知道,我已經挖了一下,找到這個出來;) 還有一些更深入的例子,但是我發現如果你不知道長度是用bufferLen = 0調用MsiGetProperty,這會失敗,因爲沒有足夠的空間來存儲一個值,但它也填充bufferLen需要多少空間來存儲實際值。再次調用MsiGetProperty(確保使用+1分配value = TCHAR [bufferLen + 1]以騰出空終止符)將返回實際值。 – glenneroo 2010-05-10 14:46:51
是的,cch是微軟的匈牙利符號「字符數」,而cb是「字節計數」。 – 2010-05-10 20:27:27
是的,這是[記錄的行爲](https://msdn.microsoft.com/en-us/library/windows/desktop/aa370134(v = vs.85).aspx)。遵循這種模式,Win32和shell非常一致。 – 2016-04-28 03:11:59