2016-09-13 26 views
0

我开始使用WiX,并且在定制ExitDIalog时遇到了一些麻烦。在ExitDialog中调用自定义exe

起初我想:

  • 我想创建一个设置为我的应用

  • 设置后,我想提出两个选择:

    • 启动应用程序( application.exe新安装)

    • 启动可选的设置(我的应用程序需要安装一些驱动器根据用户的拍照)

  • 可选的设置是一个.exe文件。它应该放置在setup.msi旁边,但不要复制到我的应用程序文件夹中。

我创建的目录:

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramMenuFolder"> 
     <Directory Id="ApplicationProgramsFolder" Name="$(var.compagny)"/> 
    </Directory> 
    <Directory Id="DesktopFolder" SourceName="Desktop"/> 
    <Directory Id="ProgramFilesFolder"> 
     <Directory Id="COMPAGNYFOLDER" Name="$(var.compagny)"> 
     <Directory Id="INSTALLFOLDER" Name="$(var.product)">    
      <Directory Id="fr" Name="fr"/> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Directory> 
</Fragment> 

我如何引用添加到我的.exe?我所做的:

<Component Id="ProductComponent" Guid="{2C26B191-6654-4405-8E78-F8B6EFEDC9FC}" Directory="INSTALLFOLDER"> 
    <File Id="uEye64_47100_WHQLexe" Source="./Resources/uEye64_47100_WHQL.exe" KeyPath="yes" Checksum="yes" Compressed="no" Vital="no"/> 
</Component> 

uEye64_47100_WHQL.exe文件在INSTALLFOLDER复制(我不想),并设置混合与路径[应用] /斌/释放(不知道有)。在日志文件有:

Failed to open the file:C:\dev\MyApplication\main\SetupProject\bin\Release\MyCompagny\MyProduct\uEye64_47100_WHQL.exe for computing its hash. Error:3

我这样调用该.exe(这个文件需要提升权限)

<!-- Set checkbox for launch install uEye --> 
<Property Id="WIXUI_EXITDIALOGUEYECHECKBOXTEXT" Value="Launch install uEye"/> 
<CustomAction Id="SetExecUEye" FileKey="uEye64_47100_WHQLexe" ExeCommand="" Return="asyncNoWait" Impersonate="no" Execute="deferred"/> 

<UI> 
    <UIRef Id="WixUI_Custom"/>  
    <Publish Dialog="MyExitDialog" 
      Control="Finish" 
      Event="DoAction"     
      Value="SetExecUEye">WIXUI_EXITDIALOGUEYECHECKBOX = 1 and NOT Installed</Publish> 
</UI> 

我应该如何定义我uEye64_47100_WHQL.exe被称为安装后却没有复制在INSTALLFOLDER

回答

2

如果您不想复制文件以安装位置,只需运行它即可将其作为二进制源代替组件。这样,它被打包在安装程序中,但未安装(可能仅限于某个临时文件夹)。

<Binary Id="uEye64_47100_WHQLexe" SourceFile="./Resources/uEye64_47100_WHQL.exe" /> 
<CustomAction Id="InstalluEye64exe" BinaryKey="uEye64_47100_WHQLexe" ExeCommand="" Execute="deferred" Return="ignore" Impersonate="no"/> 
+0

您节省了我的一天!威克斯会让我疯狂。删除一个错误(ErrorCode 2762)和我的设置将完成。 –

+0

是否可以将二进制文件设置为未压缩而不重要?我的setup.msi是4ko,optionnal.exe是150Mo。声明为'Binary'使得我的setup.msi为154Mo。至少我的设置必须在没有这个文件的情况下工作(只有复选框会出错) –