我会举一个例子说明我是如何做到的:
首先创建您的自定义操作:
[CustomAction]
public static ActionResult CreateIisConfigs(Session session)
{
try
{
LoadXmlFile(session);
var iisSettings = new IisSettings
{
PathName = session["PATHNAME"],
UserPath = session["USERPATH"],
Website = session["WEBSITE"],
SqlDataSource = session["BLOBSQLDATASOURCE"],
AppPool = session["BLOBAPPLICATIONPOOL"],
ApplicationName = session["BLOBAPPLICATION"],
ApplicationPath = @"Sites\Blabla.Application.WebAPI.Blobs",
EnvirName = session["BLOBENVIRONMENTNAME"],
EnvirPath = session["ENVIRONMENTPATH"],
IdentityDomainType = session["BLOBIDENTITYDOMAIN"],
SitePhysPath = session["SITEPHYSPATH"],
SqlPass = session["BLOBSQLPASSWORD"],
SqlUser = session["BLOBSQLUSER"],
SslCertPath = session["SSLCERTPATH"],
SslCertPass = session["SSLCERTPASS"],
UserAppl = session["BLOBUSERAPPLICATION"],
};
IisConfigs.ApplyNewConfigs(iisSettings);
}
catch (Exception e)
{
session.Log("----------------------------------------IIS ERROR ---------------------------------------");
session.Log(e.ToString());
return ActionResult.Failure;
}
return ActionResult.Success;
}
然后在你的 wxs 中初始化属性等。:
<Property Id="PATHNAME" Hidden="yes"/>
<Property Id ="WEBSITE" Hidden="yes"/>
<Property Id="SITEPHYSPATH" Hidden="yes"/>
<Property Id="USERPATH" Hidden="yes"/>
声明引用 dll 或自定义操作的二进制文件:
<Binary Id="CustomActionsId" SourceFile="..\Blob.CustomActions\bin\Debug\Blob.CustomActions.CA.dll"/>
声明您的自定义操作:
<CustomAction Id="CreateIisConfigs" BinaryKey="CustomActionsId" Return="check" Execute="immediate" DllEntry="CreateIisConfigs" />
最后决定自定义操作将如何执行:
<InstallExecuteSequence>
<Custom Action="CreateIisConfigs" Before="InstallInitialize">NOT Install</Custom>
</InstallExecuteSequence>