寻找有关如何开始编写wix扩展的清晰度。正在阅读this page,这允许我们开始创建一个wix扩展,用于向安装程序添加自定义操作。
接下来,我想知道如何开始编写动作本身,我在旧的installscript代码中删除了一个方法并开始纠正它。在MsiGetProperty上窒息,我想通过"使用"来弄清楚我需要导入什么。使其可用。然后我遇到了this page,似乎有其他属性未在wix骨架页面上引用。然后我想,"我想知道在我安装它时是否有一个用于wix扩展的项目类型?"是的,有!代码片段看起来像来自第二个链接,它们都不反映wix页面上的内容......
那么,我该怎么办?我有几个自定义操作从installshield端口,只需要一个如何构建项目和方法的实例,并将其挂钩到我的wix xml文件中。谢谢!
答案 0 :(得分:1)
我给你一个如何做的例子:
首先创建自定义操作:
[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>