我想使用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中。
答案 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 test
,hard to debug
,并具有challenges with impersonation
(运行它的安全上下文),sequencing
和conditioning
(当它运行时-以哪种安装模式运行:安装,修复,修改,卸载等)。 Custom actions are hard to do well。简单明了。