Wix Bootstrap防止使用临时目录

时间:2018-10-24 20:21:45

标签: wix windows-installer

我已经使用Bootstrapper Project for Wix v3项目类型构建了“ HelloWord”安装程序。

我的bundle.wxs是

    <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <Bundle Name="Bundle_name"
          Version="1.0.0.0"
          Manufacturer="Producter"
          UpgradeCode="C82A383C-751A-43B8-90BF-A250F7BC2863"
          IconSourceFile="..\WpfForms\Assets\my_lovely.ico"  >

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload SourceFile="..\WpfForms\BootstrapperCore.config"/>
      <Payload SourceFile="..\WpfForms\bin\Debug\WpfForms.dll"/>
      <Payload SourceFile="..\WpfForms\bin\Debug\GalaSoft.MvvmLight.dll"/>
      <!--<Payload SourceFile="..\WpfForms\bin\Debug\Microsoft.Practices.ServiceLocation.dll"/>
      <Payload SourceFile="..\WpfForms\bin\Debug\Microsoft.WindowsAPICodePack.dll"/>
      <Payload SourceFile="..\WpfForms\bin\Debug\Microsoft.WindowsAPICodePack.Shell.dll"/>-->

      <Payload SourceFile="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ServiceProcess.dll"/>
      <Payload SourceFile="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Configuration.Install.dll"/>
      <Payload SourceFile="C:\Program Files (x86)\WiX Toolset v3.11\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
    </BootstrapperApplicationRef>

    <Chain>
      <PackageGroupRef Id='Netfx4Full'/>
      <MsiPackage SourceFile="..\WixSetupProject\bin\Debug\WixSetupProject.msi" Id="InstallationPackageId" Cache="yes" Visible="no"/>
    </Chain>
  </Bundle>

  <Fragment>
    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />

    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" />
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" />

    <PackageGroup Id="Netfx4Full">
      <ExePackage Id="Netfx4Full" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" Name="DotNet_4"
                  SourceFile="../WixBootstrapper/DotNet/NDP462-KB3151800-x86-x64-AllOS-ENU.exe"
                  DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193"
                  DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />
    </PackageGroup>
  </Fragment>
</Wix>

我的问题是工作站的防病毒软件被配置为阻止来自temp目录的任何活动,并且所构建的installer.exe将自身复制为“ C:\ Windows \ Temp {74EA5B2A-DA46-4B3F-A8E9- 4FCEC4B4523C} .cr \ WixBootstrapper.exe”并默认运行它。因此它已被防病毒软件锁定,因此安装开始就已经结束。

有人知道我该如何阻止WiX组件在临时目录中创建缓存或其他内容,并设置为从curent文件夹而不是temp中运行任何嵌套的可执行文件及其自身?

1 个答案:

答案 0 :(得分:0)

  

检查Windows的组策略设置后,结果是   一个防病毒阻止问题。


组策略? :日志中是否包含以下内容:

Error 0x800704ec: Failed to launch clean room process: "C:\WINDOWS\Temp\{AB10C981-0D7D-4AA6-857F-CC37696DB4BE}\.cr\Bundle.exe" -burn.clean.room="C:\Test\Bundle.exe" -burn.filehandle.attached=652 -burn.filehandle.self=656 -log "C:\Test\bundle.log"
Error 0x800704ec: Failed to run untrusted mode.

还是说其他话?有一种可能导致类似问题的组策略。 See WiX issue 5856

反病毒宽限期? :如果您是管理员,我认为应该有可能从您的反病毒获得临时宽限期。这样您就可以执行测试了。我会先给您自己的支持部门打电话,如果不成功,请打Kaspersky user forums。也许您有一份提供优先支持的卡巴斯基支持协议?

误报 :我还坚持要求您将二进制文件上传到virustotal.com,以测试误报。那你不管做什么。 Antivirus Whitelisting Pains,由 Bogdan Mitrache

  

误报实际上有时可能比实际的恶意软件更严重(只要恶意软件没有造成破坏性)   因为您不能仅仅告诉用户重建他们的机器。相反,你实际上有   从一般意义上解决他们的问题。用户不仅有问题要解决,供应商也有一个。 您如何将包含60多个反恶意软件套件的产品列入白名单? ?我认为您首先尝试使用virustotal.com(不隶属于)-检查您是否确实拥有这样的产品一个问题。