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
是否可以使用WIX编写自定义操作,该操作以管理员身份运行,也可以访问会话变量?_Wix_Custom Action - Fatal编程技术网

是否可以使用WIX编写自定义操作,该操作以管理员身份运行,也可以访问会话变量?

是否可以使用WIX编写自定义操作,该操作以管理员身份运行,也可以访问会话变量?,wix,custom-action,Wix,Custom Action,我创建了一个WIX安装程序,它将windows服务安装到ProgramFiles文件夹中。安装后,我需要能够修改app.config以将多个条目指向安装文件夹。由于已安装的服务可以同时安装在x86和x64机器上,因此在编译时我不知道正确的路径是“\Program Files”还是“\Program Files(x86)”,也不能保证Program Files文件夹将位于C: 我创建的自定义操作使用INSTALLFOLDER会话变量中的可用数据修改已安装的app.config以指向正确的文件夹。当

我创建了一个WIX安装程序,它将windows服务安装到ProgramFiles文件夹中。安装后,我需要能够修改app.config以将多个条目指向安装文件夹。由于已安装的服务可以同时安装在x86和x64机器上,因此在编译时我不知道正确的路径是“\Program Files”还是“\Program Files(x86)”,也不能保证Program Files文件夹将位于C:

我创建的自定义操作使用INSTALLFOLDER会话变量中的可用数据修改已安装的app.config以指向正确的文件夹。当我在提升的命令提示符下运行安装程序时,这非常有效,但我正试图让我的用户更简单

不幸的是,app.config是针对windows服务的,因此启动服务的目录是\windows\System32,而不是已安装的文件夹,因此在app.config中使用相对路径将不起作用


有什么方法可以让我以管理员的身份执行自定义操作,同时仍然保持对会话变量的访问权限,或者让自定义操作只使用INSTALLFOLDER的值?

除非我有误解,否则这并不太复杂

1) 延迟的自定义操作在系统帐户下以提升方式运行,并且应该能够访问program files文件夹

2) 在延迟自定义操作中,使用CustomActionData将[INSTALLFOLDER]属性传递到延迟自定义操作代码中,这是延迟CA在不使用会话句柄的情况下访问属性的方式

这可能与:


检查以下答案:谢谢!此链接将我引向下面的链接,它最终帮助我解决了我的问题。根据上面的评论(由@isaah4110),我发现了CustomActionData属性(它将我引向上面的链接),并能够解决问题。谢谢