簡體   English   中英

Wix - 從安裝目錄安裝后如何運行 exe 文件?

[英]Wix - How to run exe files after installation from installed directory?

我正在使用一個使用 wix 安裝的程序。 (不知道它是否相關,但它是一個 C# 程序)

我想運行一個由msi文件安裝的exe文件,但是由於用戶選擇了安裝路徑,所以我不知道安裝的位置。

我想問例如如何從用戶選擇的位置運行 exe 文件。

即使這不是問題的一部分,我也很高興看到一些從絕對位置運行 exe 文件的示例,因為我是 wix 的初學者,並且是第一次這樣做。

如果您不需要 UI,Isaiah4110 答案不是最好的方法。

通過 Wix 生成的 MSI 文件執行您正在安裝的 exe 文件目標的最簡單方法是使用自定義操作類型 18(通過 FileKey 識別操作),這里是一個完整的示例:

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  <Component Id="TargetProgram" Guid="f757ff43-0266-483a-8749-ec796cba4b25" >
    <File Id="EXE" Source="C:\SetupProject\Includes\TargetProgram.exe" />
  </Component>
</ComponentGroup>

<CustomAction Id="EXECUTE_AFTER_FINALIZE"                  
              Execute="immediate" 
              Impersonate="no"
              Return="asyncNoWait"
              FileKey="EXE"
              ExeCommand="" />

<InstallExecuteSequence>
  <Custom Action="EXECUTE_AFTER_FINALIZE" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
</Fragment>

這可以在 WIX 擴展的幫助下實現。 下面的粗體/斜體文本將處理查找 EXE 的確切位置的情況:)

第 1 步:將擴展庫添加到您的項目中

如果您在命令行上使用 WiX,則需要將以下內容添加到蠟燭和燈光命令行中:

-ext WixUIExtension -ext WixUtilExtension

如果您使用的是 Visual Studio,則可以使用“添加引用”對話框添加擴展:

Right click on your project in Solution Explorer and select Add Reference...
Select the WixUIExtension.dll assembly from the list and click Add
Select the WixUtilExtension.dll assembly from the list and click Add
Close the Add Reference dialog

第 2 步:將 UI 添加到您的安裝程序

WiX Minimal UI 序列包括一組基本對話框,其中包括帶有可選復選框的完成對話框。 要將序列包含在您的項目中,請在<Product>元素內的任何位置添加以下代碼段。

<UI>
    <UIRef Id="WixUI_Minimal" />
</UI>

要在安裝程序的最后一個屏幕上顯示復選框,請在<Product>元素內的任何位置包含以下代碼段:

<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch My Application Name" />

WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT 屬性由標准 UI 序列提供,設置后,顯示復選框並使用指定的值作為復選框標簽。

第 3 步:包括自定義操作

使用<CustomAction>元素將自定義操作包含在 WiX 項目中。 運行應用程序是通過 WixShellExecTarget 自定義操作完成的。 要將自定義操作告知 Windows 安裝程序並設置其屬性,請在項目中<Product>元素內的任何位置包含以下內容:

<Property Id="WixShellExecTarget" Value="[#myapplication.exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

Property 元素將 WixShellExecTarget 設置為已安裝應用程序的位置。 WixShellExecTarget 是 WixShellExec 自定義操作期望將設置為要運行的文件位置的屬性 ID。 ***

Value 屬性使用特殊的 # 字符告訴 WiX 查找 ID 為 myapplication.exe 的文件的完整安裝路徑。


CustomAction 元素包括安裝程序中的操作。 它被賦予一個唯一的 Id,BinaryKey 和 DllEntry 屬性指示自定義操作的程序集和入口點。 Impersonate 屬性告訴 Windows Installer 以安裝用戶的身份運行自定義操作。

第 4 步:觸發自定義操作

僅包含自定義操作(如步驟 3 中所示)不足以使其運行。 還必須告知 Windows Installer 何時應該觸發自定義操作。 這是通過使用<Publish>元素將其添加到用戶單擊 UI 對話框最后一頁上的 Finished 按鈕時運行的操作來完成的。 Publish 元素應包含在步驟 2 中的<UI>元素中,如下所示:

<Publish Dialog="ExitDialog"
    Control="Finish" 
    Event="DoAction" 
    Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>

Dialog 屬性指定自定義操作將附加到的對話框,在本例中為 ExitDialog。 Control 屬性指定對話框上的完成按鈕觸發自定義操作。 Event 屬性指示應在單擊按鈕時運行自定義操作,Value 屬性指定包含在步驟 3 中的自定義操作。元素上的條件阻止操作運行,除非選中了步驟 2 中的復選框並且實際安裝了應用程序(而不是被刪除或修復)。

查看此鏈接了解詳情。 安裝后如何運行exe 我將其復制到此處以供其他尋求相同答案的人使用。

暫無
暫無

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

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