小编Ale*_*lex的帖子

如何手动清除畸形的wix-burn包?

我正在学习如何为wix-burn开发自定义托管引导程序.根据我的知识,没有正式的教程,非官方的教程总是充满了我不感兴趣的WPF内容,论坛上的大多数人做的不仅仅是说你必须创建一个继承自BootstrapperApplication的类并覆盖Run()方法.

我这样做了,创建了配置文件,将有效负载添加到xml标记中.由此产生的安装程序什么也没做,实际上它永远运行,只有杀死它才能阻止它 我真诚地期望调用base.Run()会给我一些基本的默认的无GUI行为.但这只是一种抽象的方法.最后我了解到我必须调用一些Engine.functions()来实际做一些工作.所以我写这个测试:

protected override void Run()
{
    Engine.Detect();
    Engine.Plan(LaunchAction.Install);
    Engine.Apply(IntPtr.Zero);
    Engine.Quit(0);
}
Run Code Online (Sandbox Code Playgroud)

我成功编译了一个实际安装的软件包,问题是它无法卸载.我的问题是,我该怎样做才能从我的系统中清除它?我必须删除哪些注册表项,必须删除哪些缓存包,以及我还必须做些什么来摆脱它?

customization wix burn

9
推荐指数
1
解决办法
133
查看次数

如何在dll中创建线程(c ++)?

我知道我无法从DllMain创建线程,但在DLL中创建线程的正确方法是什么?

我试图创建一个包装它的类并声明该类的全局实例,但WaitForSingleObject在类的析构函数中挂起,即使我确定该线程已退出.

这是我从exe加载DLL的示例程序:

#include <Windows.h>
#include <iostream>

using namespace std;

int main(int argc, TCHAR* argv[])
{
    HMODULE module = LoadLibraryA("dll.dll");
    Sleep(500);
    if (module) FreeModule(module);
    else cout << "failed to load library...\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是dll代码:

#include <Windows.h>
#include <iostream>

using namespace std;

class X
{
    HANDLE thread = NULL;

    static DWORD WINAPI run_thread(LPVOID param)
    {
        cout << "dll.cpp: thread started\n";
        Sleep(1000);
        cout << "dll.cpp: thread is exiting\n";
        return 0;
    }

public:
    X()
    {
        DWORD tmp;
        thread = CreateThread(NULL, 0, run_thread, …
Run Code Online (Sandbox Code Playgroud)

c++ windows dll multithreading

4
推荐指数
1
解决办法
2460
查看次数

标签 统计

burn ×1

c++ ×1

customization ×1

dll ×1

multithreading ×1

windows ×1

wix ×1