WiX安装程序添加注册表项时出现问题

时间:2019-09-06 11:53:41

标签: wix registry installer

我想使用WiX安装程序添加一些注册表。这是我的代码:

def project_update_view(request, slug):
    """
    project_update_view combines an update form with the update
history.
    """
    obj = Project.objects.get(slug=slug)
    if request.method == 'POST':
        form = ProjectUpdateForm(request.POST)
        form.instance.project = obj
        if form.is_valid():
            completed = form.cleaned_data['completed']
            category = form.cleaned_data['category']
            if completed is True:
                CategorySatisfied.objects.create(
                    project=obj, update_category=category)
            form.save()
            return redirect('project-list')
    else:
        form = ProjectUpdateForm()
    context = {
        "form": form,
        "object": obj
    }
    return render(request, 'project_portal/project_update.html', context)

但是安装程序没有将这些键添加到CurrentControlSet中,而是将这些键添加到ControlSet001中。

1 个答案:

答案 0 :(得分:0)

  

核心OS密钥 :简要介绍了这一点-肯定不是密码算法和协议方面的专家-我对使用MSI做些怀疑这个调整。由于 OS protection features 不断变化-很难预测甚至有时会变化-我不确定破解是个好主意   这些键直接-尽管有些文章指出可以。如果   可能I would use group policy to set the keys吗?


组件GUID :使用MSI进行此类设置时,还会遇到其他挑战。 I have an older answer on serverfault on why registry settings packages are dangerous。主要问题是,一旦将组件GUID指向某个关键路径(注册表或其他方式),您的MSI就会认为它是“关键”,并且会在卸载时高兴地将其剔除。这可能是您想要的,也可能不是。您需要意识到这一点,并在设计和测试中对此加以考虑。您可以将组件设置为永久,以使其保持卸载状态,或者将组件设置为空白GUID。

自定义操作 :可以使用在系统上下文中提升权限的自定义操作来写入这些键。 I am always telling people to avoid custom actions(如果可以的话),但是这个目的似乎是一个候选:据我所知,它是一种新事物,并且不受工具的支持。因此,它很适合用作自定义操作。从检查已存在的内容或对卸载进行更明智的更改方面,这也将使您对卸载和安装操作有更多的控制。

请注意,自定义操作代码为complicated to testhard to debug,并具有challenges with impersonation(运行它的安全上下文),sequencingconditioning (当它运行时-以哪种安装模式运行:安装,修复,修改,卸载等)。 Custom actions are hard to do well。简单明了