簡體   English   中英

如何創建wix類型35自定義操作

[英]How to create a wix type 35 custom action

我一直在尋找一種解決方案,以編程方式覆蓋我的應用程序的功能的目錄路徑。

我發現我需要一個35型自定義動作( https://msdn.microsoft.com/en-us/library/windows/desktop/aa368093(v=vs.85).aspx

我在互聯網上搜索了一段時間但我無處可尋找如何在C#中創建這樣的自定義動作。

我當前的自定義操作如下所示:

<CustomAction Id="CheckForSynergyInstallation"
          Return="check"
          Execute="immediate"
          BinaryKey="Real.CustomActions"
          DllEntry="GetVersionInformation" Directory="SYNERGY_FEATURE_FOLDER" />

它的C#代碼如下:

 var synergyFolder = new FileInfo(exactSynergyVersionConfigurationFile).Directory.FullName;
                log.Info($"Synergy Folder set to {synergyFolder}");

                session["SYNERGY_FEATURE_FOLDER"] = synergyFolder;

35類自定義操作調用MsiSetTargetPath來更改目錄的位置。 如果您已經有基於DTF的自定義操作,則可以調用session.SetTargetPath而不是設置屬性。

如果您還沒有基於代碼的自定義操作,則可以使用稍微少一些參數的CustomAction元素來生成類型35操作。 即省略BinaryKey和DllEntry:

<CustomAction Id=... Return=... Execute=...
    Directory="SYNERGY_FEATURE_FOLDER" Value="location"/>

您是說只是該功能中的文件與設置中的其他文件位於不同的位置? 您正在做的事情看起來會導致設置INSTALLFOLDER / TARGETDIR位置,這意味着發往INSTALLFOLDER的所有文件都將轉到該位置。 當你說你想要一個功能中的文件去某個不同的地方時,這似乎不是你所要求的。

如果有一些文件要發送到您設置的某個文件夾,並且您希望其余文件轉到其預定義的位置(ProgramFiles,GAC,Common Files等),那么您基本上只需定義一個目錄屬性,並在下面指定您的組件那個目錄。 您的自定義操作將設置該屬性名稱,因此目錄位置具有所需的值,其余文件將轉到它們應該去的位置。

暫無
暫無

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

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