2016-03-07 17 views
0

尋找清晰的如何開始編寫wix擴展。正在讀取this page,它允許開始創建一個wix擴展,以將自定義操作添加到安裝程序。要採取哪些方向來進行creasting wix自定義操作?

接下來,想要知道如何開始編碼動作本身,我放棄了舊的installscript代碼中的一種方法,並開始糾正它。在MsiGetProperty上窒息,我想弄清楚我需要通過「使用」導入以使其可用。然後我遇到了this page,它似乎有其他屬性在wix框架頁面中沒有引用。然後我想,「我想知道當我啓動它時,是否有一個項目類型用於wix擴展?」是的,有!代碼片段看起來像來自第二個鏈接,它們都不能反映wix頁面上的內容...

那麼,我該怎麼做?我有幾個自定義操作來從installshield移植,只需要一個如何構建項目和方法並將其掛接到我的wix xml文件的可靠示例。謝謝!

回答

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>