@Day8 | C# WixToolset + WPF 帅到不行的安装包 [自订动作]

前两天

已经建立好的自订页面,
现在我们要为这些页面上Action,

而WixToolset有专门自订动作的专案档Custom Action Project for Wix v3

我们建立一个DemoUse.CustomAction专案

建立好了以後我们看CustomAction,我已经改成叫SetCustomAction了

其中传入参数Session 就是由刚刚 WixToolset 内设定的自订属性,

目前可以使用的参数

1.SYSTEMIP -我们自订页面
2.WEBPORT -我们自订页面
3.INSTALLFOLDER -由选择路径页面得到的

而抓取资料的方式就session["xxx"]这样使用

var webPort = session["WEBPORT"];

假设我们要针对Json文字档做编辑
网路上抓的文字档撰写

 public class TxtEditer
    {
        private string PATH;
        public TxtEditer(string path)
        {
            PATH = path;
        }

        /// <summary>
        /// 取得文字档资料
        /// </summary>
        /// <returns></returns>
        public string GetTxtData()
        {
            var result = string.Empty;
            using (StreamReader reader = new StreamReader(PATH, System.Text.Encoding.Default))
            {
                result = reader.ReadToEnd();
            }
            return result;
        }
        /// <summary>
        /// 完全覆盖文字档
        /// </summary>
        /// <returns></returns>
        public void EditTxtData(string txt)
        {
            using (StreamWriter writer = new StreamWriter(PATH, false, System.Text.Encoding.Default))
            {
                writer.Write(txt);
            }
        }
    }

Json档了话可以用Json套件,
懒的话直接转JObject,
大略这样写….

[CustomAction]
public static ActionResult SetCustomAction(Session session)
{
    //可使用的参数
    var path = Path.Combine(session["INSTALLFOLDER"], "appsettings.json");
    var systemIP = session["SYSTEMIP"];
    var webPort = session["WEBPORT"];
           
    //编辑Json档
    var txtEditer = new TxtEditer(path);
    string txt = txtEditer.GetTxtData();
    var config = JsonConvert.DeserializeObject<JObject>(txt);
    config["URL"] = $"{systemIP}:{webPort}";
    txt = JsonConvert.SerializeObject(config, Formatting.Indented);
    txtEditer.EditTxtData(txt);

    return ActionResult.Success;
}

确定後明天再来将他们结合在一起



  • 後记

这就考验你各位的程序底子了
因为没办法直接使用F5,
而我是使用LINQPad在旁边做辅助…嘿嘿

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


<<:  使用 DOM Parser 取值

>>:  D-22. 继承(继承链问题)、模组(extend、include、prepend差异) && Add to Array-Form of Integer

予焦啦!Golang 当中的讯号(signal)机制

予焦啦!正如 Golang 自己维护了记忆体管理机制(竞技场、记忆体抽象层、垃圾回收、...)般,让...

[Day 3] Reactive Programming - Functional Programming

前言 并不是说Reactive 一定要搭配Functional,只是搭配起来更好用,而後面介绍到的R...

day23: currying

Currying Function 今天要提到的是 currying 化, currying 化是 ...

Day17 火辣南方女王-墨西哥辣肉酱卷

看到书友分享到墨西哥出差时的墨西哥午餐,又恰好在买场购物的时候发现斑豆罐头,也许是个Sign,决定买...

天上永远不会掉下玫瑰,想要的话就要自己去种植。

天上永远不会掉下玫瑰,想要的话就要自己去种植。 It never will rain roses. ...