[英]How can I create Custom Action through Installshield which calls a WiX Custom Action taking a string parameter?
[英]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.