[英]How to add custom action to wix setup project
I have 2 projects in my soliution: 我的解决方案中有2个项目:
1). 1)。 Custom action class (CustomAction) 自定义操作类(CustomAction)
2). 2)。 Wix setup project (TestSetup) Wix安装项目(TestSetup)
There is CustomAction.cs in CustomAction project: CustomAction项目中有CustomAction.cs:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.Deployment.WindowsInstaller;
namespace CustomAction
{
public class CustomActions
{
[CustomAction]
public static ActionResult CustomAction1(Session session)
{
File.Create(@"c:\installed.txt");
return ActionResult.Success;
}
}
}
Product.wxs: Product.wxs:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TestSetup" Language="1033" Version="1.0.0.0" Manufacturer="SB2"
UpgradeCode="39d922d3-a3f5-4207-b905-124615dda25d">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes"/>
<Feature Id="ProductFeature" Title="TestSetup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<InstallExecuteSequence>
<Custom Action="CustomAction" Before="InstallFinalize" />
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="TestSetup" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="result.rtf">
<File Id="result.rtf" Source="result.rtf" KeyPath="yes" Checksum="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<CustomAction Id='CustomAction' BinaryKey='CustomAction.CA' DllEntry='CustomAction' />
<Binary Id='CustomAction.CA' SourceFile='..\CustomAction\bin\Debug\CustomAction.CA.dll' />
</Fragment>
</Wix>
Setup project buils without problems, but when I'm trying to run it I get a error message: "There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor" 安装项目建立没有问题,但当我尝试运行它时,我收到一条错误消息:“此Windows Installer程序包有问题。无法运行此安装所需的DLL。请联系您的支持人员或包装供应商“
I think it's because of incorrect binary source file value. 我认为这是因为二进制源文件值不正确。 Would you to show how to fix it? 你会说明如何解决它吗?
The problem is that your CustomAction method name "CustomAction1" does not match with the "DLLEntry" value which you have mentioned (DllEntry='CustomAction'). 问题是您的CustomAction方法名称“CustomAction1”与您提到的“DLLEntry”值不匹配(DllEntry ='CustomAction')。 You are missing "1" :) 你错过了“1”:)
<CustomAction Id='CustomAction' BinaryKey='CustomAction.CA' DllEntry='CustomAction' />
You should write like this:- 你应该这样写: -
<CustomAction Id='CustomAction' BinaryKey='CustomAction.CA' DllEntry='CustomAction1' />
where CustomAction1 is your CustomAction Name.. 其中CustomAction1是您的CustomAction名称..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.