@Day10 | C# WixToolset + WPF 帅到不行的安装包 [自订动作介接画面-安装前执行]

安装前

要执行的动作

昨天有讲到安装後的执行动作,那安装之前要执行的动作勒?!
ex 我想先侦测出本机的IP再带入进安装包的 SYSTEMIP。


我们先在CustomAction额外建立一个取得本机IP的GetThisIP方法

[CustomAction]
public static ActionResult GetThisIP(Session session) 
{
   string name = Dns.GetHostName();
   var ip = Dns.GetHostEntry(name).AddressList
            .ToList()
            .Where(o => o.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork && !o.ToString().EndsWith(".1"))
            .FirstOrDefault()?.ToString() ?? "127.0.0.1";
   session["SYSTEMIP"] = ip;
   return ActionResult.Success;
}

依昨天的流程建立起来

<CustomAction Id="GetIP" BinaryKey="SettingCADLL" DllEntry="GetThisIP" Execute="immediate" Return="check" />

而启用时机使用LaunchConditions

google翻译...哈哈哈
比较好听我觉得应该叫 启动後执行

<InstallExecuteSequence>
   <Custom Action="GetIP" After="LaunchConditions" Overridable="yes">NOT Installed</Custom>
   <Custom Action="SetURL" After="InstallFinalize" Overridable="yes">NOT Installed</Custom>
</InstallExecuteSequence>

建置後执行

到这边的时候,System IP 还会是预设值127.0.0.1...

後来各种爬文才知道有另一个引用方法,使用InstallUISequence
所以我们建立这个标签并将我们这段程序码移到这里面来。

<InstallUISequence>
   <Custom Action="GetIP"  After="LaunchConditions" Overridable="yes">NOT Installed</Custom>
</InstallUISequence>

Try!



  • 後记

其实我这边很难想像到要用带有UI的字眼InstallUISequenc可以执行,
尝试过了才恍然大悟,喔~要用这个才行阿0.0

Day10程序码
https://github.com/Aslan7826/defaultMVC/commits/Day10


<<:  [DAY2]k8s在做什麽

>>:  Day 2 - NewSQL的特点

Day 23:「儿子,这是你的零用钱」- 元件间的资料传递

兔大夫: 「请问是兔豪的家属吗?」 兔豪爸: 「是,我就是。 请问我鹅子他...」 兔大夫: 「抱...

Day21-D3 基础图表:散点图/散布图

本篇大纲:基本散布图范例、进阶散布图范例 今天的一天一图表,我们要来画 散点图 / 散布图!散布图...

[Python 爬虫这样学,一定是大拇指拉!] DAY17 - 爬虫事前准备

爬虫事前准备 本篇章之後将进入爬虫环节,但开始撰写程序前,我们先来安装会使用的套件吧! 本系列文将使...

Day06【JS】「...」展开运算符 & 其余运算符

「展开运算符」与「其余运算符」, 两者的表示方式都是 ..., 以下分别说明。 展开运算符 展开运算...

DAY12 Kotlin基础 函式

欸!?这个不是在 hello world 的时候讲过了ㄇ?! 对。 其实函式还是有其他东西可以讲解的...