【问题标题】:Which direction to take for creasting wix custom actions?创建 wix 自定义操作的方向是什么?
【发布时间】:2016-03-07 17:38:51
【问题描述】:

寻找有关如何开始编写 wix 扩展的清晰说明。正在阅读 this page,它允许人们开始创建一个 wix 扩展,以便向安装程序添加自定义操作。

接下来,想知道如何开始对动作本身进行编码,我将旧的 installscript 代码放入一种方法并开始纠正它。在 MsiGetProperty 上窒息,我想弄清楚我需要通过“使用”导入什么以使其可用。然后我遇到了this page,它似乎使用了其他属性,这些属性未在 wix 骨架页面上引用。然后我想,“我想知道我安装它时是否有一个用于 wix 扩展的项目类型?”是的,有!代码片段看起来像第二个链接中的那样,两者都没有反映 wix 页面上的内容......

那么,我该怎么办?我有几个自定义操作可以从 installshield 移植,只需要一个可靠的示例来说明如何构建项目和方法并将其挂接到我的 wix xml 文件中。谢谢!

【问题讨论】:

    标签: c# wix windows-installer


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多