Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 提升的即时自定义操作_Wix - Fatal编程技术网

Wix 提升的即时自定义操作

Wix 提升的即时自定义操作,wix,Wix,我有一个要求,我知道很多人会大喊大叫,但我没有任何其他办法。在我的WIX设置中,我有一个对话框,它使用设置中设置的属性来确定与我们的算法和需要生成的锁代码相关的产品名称(带有版本类型等)。在此基础上,用户输入解锁密钥,自定义操作从所有三个文本框中提取详细信息,以确保其正确性。我没有编写创建这些的算法,不幸的是无法更改它 我的问题是,我需要能够在此对话框之前在注册表中创建一个产品密钥,以便我的锁码算法可以从中读取。所以基本上我需要提升我的自定义操作。我在某个地方读到有人实现了一个自定义操作来调用m

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


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

无法提升即时自定义操作。句号,故事的结尾#事实

你能做什么

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

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


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

NC1,有时您必须学会如何在开发时回退,让他们以正确的方式做事。安装程序不应该被迫做愚蠢的事情。学习你的手艺,开始努力后退。这就是你如何从《财富》50强公司的“包装工”变成建筑师的过程。我刚刚(我相信)回答了同样的话题:。希望这有帮助。不可能显示MSI。它不是一个可执行文件。