为什么Wix找不到SystemFolder?

时间:2018-04-12 07:25:23

标签: wix windows-installer

在我的Product中,我定义了一个如下所示的自定义操作:

<CustomAction Id="InstallScreensaver" 
              Directory="SystemFolder"
              Return="asyncNoWait" 
              ExeCommand="rundll32.exe desk.cpl,InstallScreenSaver [#screensaver]"/>

关注此博文:https://ithoughthecamewithyou.com/post/wix-tricks-for-screen-savers

但是当我链接它(光)时,我收到了这个错误:

error LGHT0094 : Unresolved reference to symbol 'Directory:SystemFolder' in section 'Product:*'.

为什么?

Wix's documentation of predefined variables上,我可以SystemFolder

  

SystemFolder - 在64位Windows上获取CSIDL_SYSTEMX86的知名文件夹,在32位Windows上获取CSIDL_SYSTEM。

我还创建了一个使用该变量的快捷方式:

<Shortcut Id="Shrt_Install_Screensaver" 
          Name="Install Screensaver"
          WorkingDirectory="SystemFolder" Icon="icon.ico"
          Target="[SystemFolder]rundll32.exe"
          Arguments="desk.cpl,InstallScreenSaver [#screensaver]"/>

1 个答案:

答案 0 :(得分:0)

也许尝试直接在SystemFolder下面添加TARGETDIR作为第一个测试(使用匆忙的模型为我编译并运行):

<Directory Id="TARGETDIR" Name="SourceDir">

  <Directory Id="SystemFolder" />
  <...>
</Directory>

我认为这对于msiexec.exe引擎来说已经足够了,即使您没有指定真正的文件夹名称,也可以填写其余的#34;因为这是{{1}之一3}}

我不确定是否将您的链接问题称为WiX错误。它可能应该自动处理,因为有问题的文件夹是系统文件夹。我会把它称为一个错误或一个缺失的自动魔法。

您的屏幕保护程序是64位还是32位?对于记录System32包含64位文件而SysWOW64包含32位文件,但我想您已经知道了。仅限Windows ...

保管的一些链接: