簡體   English   中英

安裝程序項目自定義操作-指定工作目錄

[英]Installer Project Custom Actions - Specify working directory

我有一個作為Visual Studio Installer項目部署運行的自定義操作。

是否可以相對於安裝目錄指定此自定義操作的工作目錄?

編輯

澄清

我有一個安裝程序項目,它作為自定義操作來運行程序。 我想從安裝程序項目中指定該程序的工作目錄,因此,當程序在安裝過程中運行時,它將與創建安裝程序時指定的工作目錄一起運行。

工作目錄 :這是EXE自定義操作嗎? Visual Studio Installer項目中的自定義操作以deferred mode, system context運行deferred mode, system context ,這意味着它們以System / LocalSystem身份運行。 老實說,我不確定該如何處理“ working folder ”。 我認為這只是意味着工作文件夾位於運行可執行文件的位置。

VS Installer項目的局限性 :Visual Studio Installer項目缺乏完全配置高級設置的能力。 有一種方法可以運行EXE文件並指定工作文件夾,但這些項目不支持該方法。 我也不確定在我們知道您的實際運行之前,是否可以解決您的問題。 可能是腳本。 這些安裝程序項目存在幾個主要問題

自定義操作類型34自定義操作允許您Run an EXE file having a path referencing a directory 您要么需要使用Orca來修復輸出MSI,要么使用諸如WiX之類的實際部署工具或等效的商業選項 盡管我沒有嘗試過,但是WiX應該能夠完成您想要的事情-所有其他主要的商業選擇也應該這樣做。

修補程序 :MSI修補程序有些復雜,這意味着您必須向CustomAction TableInstallExecuteSequence Table添加條目。 如果二進制文件是要在安裝后運行的文件,或者是磁盤上已經存在的文件,則無需將二進制文件添加到二進制表中 您需要為自定義操作列Type設置許多標志,這些標志與該操作是同步還是異步運行,是否要因錯誤而中止,它將以什么順序運行以及類似的東西有關。 您組合位字段。

您可以在命令行參數上將工作目錄傳遞到程序中,但前提是程序設計為采用該值並將其用作其工作目錄。 另外,程序也可以使用以下代碼導出其運行目錄:

> public static string GetAssemblyPathByCodeBase() {
>     string codeBase = Assembly.GetExecutingAssembly().CodeBase;
>     UriBuilder uri = new UriBuilder(codeBase);
>     return Path.GetDirectoryName(Uri.UnescapeDataString(uri.Path)); }

普遍的問題是,從(例如)雙擊運行程序時,Explorer Shell將工作目錄設置為托管目錄。 Windows Installer不會這樣做。

暫無
暫無

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

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