Eski bir WiSE yükleyicisinden bir DLL aldım, çünkü WiX'te çalışmaya çalışıyorum, bu yüzden MSI tabanlı yükleyicilerle DLL çalıştığıma eminim. İşte WiX - Bir CustomAction (DLL) parametrelere geçiriliyor
benim tanımı şöyledir:<Binary Id="SetupDLL" SourceFile="../Tools/Setup.dll" />
<CustomAction Id="ReadConfigFiles" BinaryKey="SetupDLL" DllEntry="readConfigFiles" />
ve kullanımı:
extern "C" UINT __stdcall ReadConfigFiles(MSIHANDLE hInstall, CHAR * szDirectory)
Ben parametrelerinde tam olarak nerede geçirebilirsiniz:
<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="ReadConfigFiles" Order="3">1</Publish>
Benim C++ işlevi şöyle?
& cch_value başka durumda birisi tampon uzunluğu (i bulmak için biraz kazmak zorunda kaldı, merak olduğunu Bu dışarı;) Orada birkaç daha derinlikli örnekler var ama ben uzunluğunu bilmiyorsanız bir "hile" bulduğum MsiGetProperty bufferLen = 0 ile çağırmak, çünkü saklamak için yeterli alan yok çünkü bir değer ama aynı zamanda bufferLen'i gerçek değeri depolamak için ne kadar alana ihtiyaç duyduğunu da doldurur. MsiGetProperty'yi tekrar çağırmak (boş değer sonlandırıcı için yer açmak için değer = TCHAR [bufferLen + 1] +1 ile ayırdığınızdan emin olmak) gerçek değeri döndürecektir. – glenneroo
Evet, cch, Microsoft'un "Bayt Sayısı" olan cb'den farklı olarak "CHacaters Sayımı" için Macar notalarıdır. –
Ve evet, bu [belgelenmiş davranış] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa370134 (v = vs.85) .aspx). Win32 ve kabuk bu desen takip oldukça tutarlıydı. –