2017-06-21 76 views
0

我需要一个DLL复制到文件夹system32,这是我的维克斯脚本,但它不工作,复制命令只是失败:WIX不会复制到DLL System32文件夹

<?xml version="1.0" encoding="UTF-8"?> 

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
    <Product Id="*" Name="LMBrick Service" Language="1033" Version="1.3.0.0" 
      Manufacturer="MyCompany" UpgradeCode="3de1a175-3701-435f-90bc-e97cb66b5524"> 
    <Package InstallerVersion="200" Compressed="yes" InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine" Platform="x64" /> 
<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <Media Id="1" Cabinet="cab1.cab" EmbedCab="yes" /> 

    <Feature Id="ProductFeature" Title="LMBrickServiceInstallation" Level="1"> 
     <ComponentGroupRef Id="LMBrickComponents" /> 
    </Feature> 

    <CustomAction Id="InstallLMBrickDll" Directory="LMBRICKINSTALLFOLDER" Execute="deferred" Impersonate="no" 
        ExeCommand="copy LMBrick.dll [System64Folder]LMBrick.dll" 
        Return="check" /> 

    <InstallExecuteSequence> 

     <Custom Action="InstallLMBrickDll" After="InstallFiles">NOT Installed</Custom> 
    </InstallExecuteSequence> 

    </Product> 

    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFiles64Folder"> 
     <Directory Id="Company" Name="MyCompany"> 
      <Directory Id="App" Name="MyProduct"> 
      <Directory Id="LMBRICKINSTALLFOLDER" Name="LMBrickService"> 
      </Directory> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 

</Wix> 

回答

3

自定义操作是运行Exes必须实际运行一个exe文件。但副本不是一个exe;它内置在命令行程序中。所以,你有两个选择立即(与后两种更好的选择):

  • 找到一个实际的exe文件,如XCOPY.EXE,并运行,而不是,或
  • 执行shell如CMD。 exe与参数调用其副本内置。

可以通过打开一个命令提示和执行其中复制分别和其中XCOPY命令证实这一点。请注意,启动cmd.exe或任何控制台程序作为Exe将导致安装过程中控制台窗口闪烁。这通常看起来相当不专业,你应该用两种方式之一:

  • 化包装,如WixQuietExec可以抑制控制台窗口,或
  • 内置的Windows安装程序的功能,如通过CopyFile外露,可避免完全需要一个自定义操作。

如果可能,最好避免自定义操作并使用Windows Installer功能。因此,如果可以的话,请瞄准最后一个选项。

+0

非常感谢你!另一个问题:我需要在WIX安装期间重新启动IIS,我该怎么做?我知道我需要自定义操作,但我找不到iisreset.exe可执行文件的任何WIX预定义路径。如果你想要更多的代表点,我做了一个适当的SO问题,这里的链接 - > https://stackoverflow.com/questions/44677549/how-to-restart-iis-from-wix –

相关问题