我有一个请求,我知道很多人会大喊大叫,但我没有任何其他方法。在我的WIX设置中,我有一个对话框,它使用设置中设置的属性来确定与我们的算法和需要生成的锁码相关联的产品名称(版本类型等)。根据这些,用户输入解锁密钥,自定义操作从所有三个文本框中提取详细信息以确保其正确无误。我没有编写用于创建这些的算法,遗憾的是无法改变它。
我的问题是我需要能够在此对话框之前在注册表中创建产品密钥,以便我的锁码算法可以从中读取。所以基本上我需要提升自定义操作。我在某处读到有人实现了一个自定义动作来调用msiexec但现在我找不到它而且不知道如何创建它。有没有人遇到过同样的问题?我一直在读人们有,但我似乎无法找到他们的解决方案,即使有一个解决方案。提前致谢
答案 0 :(得分:5)
立即自定义操作无法升级。期间,故事结束。 #FACT
你能做什么?
1)使用一个setup.exe引导程序,该程序显示需要admin,并且MSI中的启动条件是由引导程序启动的。 (Bootstrapper将属性传递给MSI SETUPEXEDRIVEN = 1是InstallShield调用它。)这确保了整个UI序列的提升。 (这不是最好的做法,但我会把它放在那里。)
2)写信给HKCU而不是HKLM(很可能会要求重构许可证代码,但无论如何它都是一个破损的设计。)
3)将安装程序界面重构为许可证API。我之前做过这个。我曾经为一家公司工作,该公司希望安装人员拨打EXE来验证许可证。一个大问题是EXE处于进程中并且无法与安装程序进行通信。所以他们开始将“ISVALID”写入注册表,然后我希望在EXE周围写一个VBScript来刷新值,调用exe然后检查值并设置MSI属性。嗯,你能说#FAIL吗?最佳解决方案是强制开发团队为许可证代码创建API,我可以直接从不需要提升权限或任何其他hackery的标准MSI自定义操作调用。