diff --git a/samples/CPlusPlusWidgets/main.cpp b/samples/CPlusPlusWidgets/main.cpp index 1bac5629..efdc0867 100644 --- a/samples/CPlusPlusWidgets/main.cpp +++ b/samples/CPlusPlusWidgets/main.cpp @@ -51,8 +51,14 @@ public: class MyFrame : public wxFrame { public: + ~MyFrame() + { + vpkc_set_logger(nullptr, nullptr); + } MyFrame() : wxFrame(nullptr, wxID_ANY, "VelopackCppWidgetsSample", wxDefaultPosition, wxSize(600, 600)) { + vpkc_set_logger(&MyFrame::HandleVpkcLogStatic, this); + // Set background color to white // SetBackgroundColour(*wxWHITE); @@ -180,6 +186,23 @@ private: } + void HandleVpkcLog(const char* pszLevel, const char* pszMessage) + { + std::string level(pszLevel); + std::string message(pszMessage); + wxTheApp->CallAfter([this, level, message]() { + if (textArea) { // Ensure textArea is valid. + textArea->AppendText(level + ": " + message + "\n"); + } + }); + } + + static void HandleVpkcLogStatic(void* context, const char* pszLevel, const char* pszMessage) + { + MyFrame* instance = static_cast(context); + instance->HandleVpkcLog(pszLevel, pszMessage); + } + void HandleProgressCallback(size_t progress) { wxTheApp->CallAfter([this, progress]() diff --git a/samples/CPlusPlusWin32/CppWin32Sample.cpp b/samples/CPlusPlusWin32/CppWin32Sample.cpp index 7a200d7b..7066927d 100644 --- a/samples/CPlusPlusWin32/CppWin32Sample.cpp +++ b/samples/CPlusPlusWin32/CppWin32Sample.cpp @@ -38,6 +38,11 @@ INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); std::wstring Utf8ToWString(std::string const& str); std::string WStringToUtf8(std::wstring const& wstr); +void handle_vpkc_log(void* pUserData, const char* pszLevel, const char* pszMessage) +{ + std::cout << pszLevel << ": " << pszMessage << std::endl; +} + int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, @@ -52,6 +57,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, // Initialize Velopack log capture std::cout << "Velopack C++ Sample App" << std::endl; + vpkc_set_logger(handle_vpkc_log, 0); // This should run as early as possible in the main method. // Velopack may exit / restart the app at this point. diff --git a/samples/NodeJSElectron/src/index.ts b/samples/NodeJSElectron/src/index.ts index dd287701..ddc3e9f9 100644 --- a/samples/NodeJSElectron/src/index.ts +++ b/samples/NodeJSElectron/src/index.ts @@ -1,5 +1,5 @@ import { app, BrowserWindow } from 'electron'; -import { VelopackApp } from "velopack"; +import { VelopackApp, setVelopackLogger } from "velopack"; import { initializeUpdates } from "./update" // This allows TypeScript to pick up the magic constants that's auto-generated by Forge's Webpack // plugin that tells the Electron app where to look for the Webpack-bundled app code (depending on @@ -9,6 +9,7 @@ declare const MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY: string; // VelopackApp should be the first thing to run in startup // as it may need to quit / restart the application at certain points +setVelopackLogger((lvl, msg) => console.log(`Velopack [${lvl}] ${msg}`)); VelopackApp.build().run(); // Configure IPC listener for Velopack update messages