簡體   English   中英

無法使用WiX安裝程序進行設置

[英]Unable to setup with WiX Installer

我使用WiX安裝程序為C#應用程序創建了安裝程序。

我使用CustomAction類安裝SQL數據庫並設置文件夾的權限。

有我的課:

public class CustomActions
{
    [CustomAction]
    public static ActionResult AllowAppData(Session session){...}

    [CustomAction]
    public static ActionResult Install_SetupDataBase(Session session){...}
}

和product.wxs:

<Binary Id="CASetup.dll" SourceFile="$(var.SetupCustomAction.TargetDir)$(var.SetupCustomAction.TargetName).CA.dll" />
<CustomAction Id="CustomActionSetupAllow" BinaryKey="CASetup.dll" DllEntry="AllowAppData" Execute="immediate" />
<CustomAction Id="CustomActionSetupBase" BinaryKey="CASetup.dll" DllEntry="Install_SetupDataBase" Execute="immediate" />

<InstallExecuteSequence>
  <Custom Action='CustomActionSetupAllow' After='InstallFinalize' />
  <Custom Action='CustomActionSetupBase' After='InstallFinalize' />
</InstallExecuteSequence>

構建正常,但是當執行安裝時,我收到消息:

在此處輸入圖片說明

我嘗試僅使用CustomActionSetupAllow ,而且效果很好。 但是有了CustomActionSetupBase我得到了消息。

我怎么知道缺少什么DLL? 我應該在哪里添加參考?

錯誤“無法運行”並不意味着它已丟失。 它位於MSI文件的Binary表中,並將被流式傳輸到磁盤上以運行。 該錯誤意味着它無法加載和運行,或者正在崩潰。 有可能缺少依賴的Dll。

一個潛在的嚴重問題是您已將自定義操作(CA)標記為立即執行。 這意味着它可以在安裝任何東西之前運行,例如您可能正在填充的空數據庫,以及它可能需要的任何依賴的Dll。 除此之外,如果您使用直接CA創建SQL DB,並且安裝隨后失敗,那么您將擁有一個DB但沒有安裝產品。 這應該是一個延遲的自定義操作,最好是使用回滾CA來刪除該數據庫,以便用戶可以再次運行安裝,而不必再填充同一數據庫(如果有問題)。

您可能還需要查看其他領域。 即時CA使用安裝用戶的憑據而不是提升的身份運行,因此,如果代碼需要提升,它將失敗。 延遲的CA將隨系統帳戶一起運行,因此使用系統帳戶訪問SQL DB可能是一個問題。 CA中的代碼必須具有很高的防御性,因為它與交互式測試的環境不同。 由於這些原因,通常最好使用在應用程序首次運行時在真正的交互式環境中運行的啟動程序來執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM