代码之家  ›  专栏  ›  技术社区  ›  Ficertyn

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

  •  1
  • Ficertyn  · 技术社区  · 11 年前

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

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

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

    是否有任何方法可以让我以管理员的身份执行自定义操作,同时仍然保持对会话变量的访问,或者有某种方法使INSTALLFOLDER的值可用于自定义操作?

    1 回复  |  直到 11 年前
        1
  •  3
  •   Community CDub    7 年前

    除非我误解了什么,这并不太复杂。

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

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

    这可能是相关的:

    How to pass CustomActionData to a CustomAction using WiX?

    http://sajojacob.com/2008/02/customactiondata-in-wix-with-deferred-custom-actions/