I have listbox in dialog:
        <Control Type="ListBox" Property="SELECTEDGUICONFIG"
Id="GUIConfigsList" Width="280" Height="91" X="25" Y="70">
          <ListBox Property="SELECTEDGUICONFIG">
            <ListItem Text="Ничего не делать" Value="0"/>
          </ListBox>
        </Control>


Custom action:
    <InstallUISequence>
      <Custom Action="CAFillSavedConfigs" After="AppSearch"/>
    </InstallUISequence>


C++ code:
void LogMsiMessage(MSIHANDLE hInstall, LPCWSTR szText) {
        PMSIHANDLE hErr = MsiCreateRecord(1);
        MsiRecordSetString(hErr, 0, szText);
        MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hErr);
}

extern "C" UINT __stdcall FillSavedConfigs (MSIHANDLE hInstall) {
        TCHAR lPath[MAX_PATH], lPath1[MAX_PATH];

        DWORD len = MAX_PATH;
        //Получаем полный путь к файлу установки
        MsiGetProperty(hInstall, L"OriginalDatabase", lPath, &len);
        //Ищем индекс последнего слэша в пути
        int i = wcslen(lPath);
        while ((i > 0) && (lPath[i] != '\\'))
                i--;
        //Копируем путь к файлу
        wcsncpy_s(lPath1, lPath, i);

        WIN32_FIND_DATA sr;
        HANDLE hF;

        wcscat_s(lPath1, TEXT("\\*.brf"));
        if ((hF = FindFirstFile(lPath1, &sr)) != INVALID_HANDLE_VALUE)
        {
                //Получаем текущую базу
                PMSIHANDLE hDB = MsiGetActiveDatabase(hInstall);
                int i = 2;//поле Order в таблице ListBox
                do
                {
                        //Пишем в лог данные
                        swprintf_s(lPath, L"Found config file: %s", 
sr.cFileName);
                        LogMsiMessage(hInstall, lPath);

                        //Добавляем строку в листбокс
                        //Формируем запрос
                        swprintf_s(lPath, L"INSERT INTO ListBox VALUES 
('SELECTEDGUICONFIG', %d,
'%d', '%s')", i++, i, sr.cFileName);
                        //Пишем его в лог
                        LogMsiMessage(hInstall, lPath);
                        //Открываем вид
                        MSIHANDLE hView;
                        UINT res;
                        if ((res = MsiDatabaseOpenView(hDB, lPath, &hView)) != 
ERROR_SUCCESS)
                        {
                                if (res == ERROR_BAD_QUERY_SYNTAX)
                                        LogMsiMessage(hInstall, 
L"MsiDatabaseOpenView() error!:
ERROR_BAD_QUERY_SYNTAX");
                                if (res == ERROR_INVALID_HANDLE)
                                        LogMsiMessage(hInstall, 
L"MsiDatabaseOpenView() error!:
ERROR_INVALID_HANDLE");

                                PMSIHANDLE hErr = MsiGetLastErrorRecord();
                                MsiProcessMessage(hInstall, 
INSTALLMESSAGE_INFO, hErr);
                        } else {
                                //Выполняем запрос
                                if (MsiViewExecute(hView, NULL) != 
ERROR_SUCCESS)
                                        LogMsiMessage(hInstall, 
L"MsiViewExecute() error!");
                                //Записываем изменения
                                if (MsiDatabaseCommit(hDB) != ERROR_SUCCESS)
                                        LogMsiMessage(hInstall, 
L"MsiDatabaseCommit() error!");
                                //Закрываем хэндлы
                                MsiViewClose(hView);
                                MsiCloseHandle(hView);
                        }
                }
                while (FindNextFile(hF, &sr) != 0);
                //MsiDatabaseCommit(hDB);
                MsiCloseHandle(hDB);
                FindClose(hF);
        }

        return ERROR_SUCCESS;

}



At log I see errors:
11:49:59: CAFillSavedConfigs.
MSI (c) (98:5C) [11:49:59:156]: Invoking remote custom action. DLL:
C:\DOCUME~1\vunder\LOCALS~1\Temp\MSI27B9.tmp, Entrypoint: FillSavedConfigs
Found config file: 1.brf
INSERT INTO ListBox VALUES ('SELECTEDGUICONFIG', 2, '2', '1.brf')
MSI (c) (98:DC) [11:49:59:359]: Note: 1: 2237 2:  3: INSERT INTO ListBox
VALUES ('SELECTEDGUICONFIG', 2, '2', '1.brf') 4:  
MsiDatabaseOpenView() error!: ERROR_BAD_QUERY_SYNTAX
DEBUG: Error 2237:  Database: . Invalid or missing query string: INSERT INTO
ListBox VALUES ('SELECTEDGUICONFIG', 2, '2', '1.brf')



What am I doing wrong?
-- 
View this message in context: 
http://n2.nabble.com/Problems-with-adding-items-to-ListBox-tp4875793p4875793.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to