2

我有一个请求,我知道很多人会大声疾呼,但我没有其他办法。在我的 WIX 设置中,我有一个对话框,它使用设置中设置的属性来确定与我们的算法相关的产品名称(带有版本类型等)以及需要生成的锁码。基于这些,用户输入他们的解锁密钥,自定义操作从所有三个文本框中提取详细信息以确保其正确。我没有编写创建这些的算法,不幸的是无法更改它。

我的问题是我需要能够在此对话框之前在注册表中创建产品密钥,以便我的锁码算法可以从中读取。所以基本上我需要提升我的自定义操作。我在某处读到有人实现了一个自定义操作来调用 msiexec,但现在我找不到它并且不知道如何创建它。有没有人遇到过同样的问题?我一直在阅读人们有但我似乎无法找到他们的解决方案,或者即使有一个。提前致谢

4

1 回答 1

5

不能提升即时自定义操作。期,故事结束。#事实

你能做什么?

1) 使用一个 setup.exe 引导程序,该引导程序显示为需要管理员和 MSI 中的启动条件,强制它由引导程序启动。(引导程序将属性传递给 MSI SETUPEXEDRIVEN=1 是 InstallShield 所称的。)这可确保提升整个 UI 序列。(这不是最佳实践,但我将其发布给您。)

2)写信给HKCU而不是HKLM(可能需要重构许可证代码,但嘿,无论如何这是一个损坏的设计。)

3) 将安装程序接口重构为许可 API。我以前做过。我曾经在一家公司工作,该公司希望安装程序调用 EXE 来验证许可证。一个大问题是 EXE 不在进程中,无法与安装程序通信。所以他们开始向注册表写入“ISVALID”,然后我被期望在 EXE 周围编写一个 VBScript 来刷新值,调用 exe 然后检查值并设置 MSI 属性。嗯,你能说#FAIL吗?最佳解决方案是强制开发团队为许可代码创建一个 API,我可以直接从标准 MSI 自定义操作调用该 API,不需要提升权限或任何其他黑客行为。

于 2012-10-26T12:17:45.570 回答