在使用WIX实现的MSI应用程序卸载期间输入



我们有一个使用WIX开发的应用程序。当用户尝试在Windows上卸载应用程序时,我们需要提示用户输入代码进行验证。如果用户提供了正确的代码,那么卸载将继续进行,否则卸载可能会中止。如何提示用户提供代码?

目前,我们在卸载过程中有一个自定义步骤,我们可以使用WTSSendMessage向他显示一些消息。如果我尝试从用户接收输入使用对话框,它永远不会弹出。但是,相同的对话框可用于其他Windows应用程序,但在卸载阶段不起作用。如何在卸载过程中提示用户输入代码?

问题是在对话框调用中找到适当的HINSTANCE。我正在使用GetModuleHandle(NULL)或NULL。它不起作用是因为它不是可执行的,而是DLL。当我为DLL使用适当的HINSTANCE时,它开始工作。下面是查找DLL的HINSTANCE的代码片段:

HMODULE GetCurrentModule()
{
HMODULE hModule = NULL;
GetModuleHandleEx(
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(LPCTSTR)GetCurrentModule,
&hModule);
return hModule;
}
bool callingFunction()
{
INT32 retVal = DialogBox(GetCurrentModule(),
MAKEINTRESOURCE(IDD_UNINST_CODE),
NULL, //(HWND)hInstall,
(DLGPROC)MsgProcessingProc);
...

最新更新