C#用Setup Project install打包安装程序时,如何获取自定义属性值【通俗易懂】

这类的文章网上非常少,每一篇都是我的良师益友,我看了十几篇资料,再自己反复测试,总算达成目的。

目的:在安装程序时,要求选择设备类型,以及炉管数量。后续打开程序会自己读取安装的选择,配置对应的功能。

我用的vs2019

第一步:先安装InstallerProjects(2019).vsix,这个教程很多,我就略过。

第二步:在解决方案资源管理器中,鼠标右键“解决方案”,添加--新建项目--类库;然后将Class1.cs删除。

 第二步:鼠标右键类库名称,添加--新建项--安装程序类;他会帮你生成一个继承自Installer的类。

 

第三步:在解决方案资源管理器中,鼠标右键“解决方案”,添加--新建项目--Setup Project;创建安装项目。

第四步:鼠标右击安装项目名称,依次选择view--文件系统,会弹出如下界面:

 鼠标右键Application Folder,依次点 Add-项目输出,把在项目这里看得到的都分别生成一下主输出,就会得到如上图所示的结果。

 第五步:鼠标右击安装项目名称,依次选择view--自定义操作,会弹出如下界面:

右击Install,添加自定义操作,在弹出的对话框中,选中Application Folder,点OK

然后依次把这2个主输出都添加进去,结果如图

------------------------------------------------------------------------

第六步:鼠标右击安装项目名称,依次选择view--用户界面,会弹出如下界面:

 下图标红的是我创建的2个属性,鼠标右键这2个项目,在属性中可以对画面上的文字进行设置。

最主要的是ButtonProperty这个属性名要注意,后续调用会用到。

第七步:鼠标右击安装项目名称,依次选择view--自定义操作,在Install下选择安装类库的那个主输出,右键--属性窗口,找到CustomActionData,按下面的语法写好

//使用方法以斜杠开头,后接参数名,引号类是自定义操作中的字段名,有多个参数中间用空格隔开。这下面的所有字母都是你自己取的,=号前是取属性值时用,=号后是输入属性值时用。
GuanNum="[BUTTON2]" /SbName="[BUTTON3]" /targetdir="[TARGETDIR]\"  

 第八步:代码部分,打开类库中那个安装程序类Install1.cs,参照我的源代码,同时查看我的注释说明。

   public Installer1()
        {
            InitializeComponent();
            this.BeforeInstall += new InstallEventHandler(InstallerTest_BeforeInstall);
            //this.AfterInstall += new InstallEventHandler(InstallerTest_AfterInstall);
        }
        private void InstallerTest_BeforeInstall(object sender, InstallEventArgs e)
        {
            
            //以下三行代码就是获取安装时用户输入的数据,双引号内的名称对应CustomActionData
            //使用方法以斜杠开头,后接参数名,引号类是自定义操作中的字段名,有多个参数中间用空格隔开。
            ///GuanNum="[BUTTON2]" /SbName="[BUTTON3]" /targetdir="[TARGETDIR]\"   
            path = this.Context.Parameters["targetdir"];
            sbName = this.Context.Parameters["SbName"];
            guanNum = this.Context.Parameters["GuanNum"];
            writeMessage();//将获取的值写入安装目录下的文件中           
        }
        
        private void writeMessage()
        {
            string selectText = sbName + "," + guanNum;
            string path = Installer1.path;//获取应用程序安装路径
            string fileName = path + "\\Test.txt";
            try
            {
                using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
                {
                    fs.SetLength(0);
                    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.WriteLine(selectText);
                        sw.Close();
                        fs.Close();

                    }
                }
            }
            catch  {            }           
        }

对本笔记有不懂的地方,欢迎留言。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值