Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载组合框wix时出错_C#_Combobox_Wix_Windows Installer - Fatal编程技术网

C# 加载组合框wix时出错

C# 加载组合框wix时出错,c#,combobox,wix,windows-installer,C#,Combobox,Wix,Windows Installer,我有一个C自定义操作,它将可用的服务器证书加载到组合框中。在我这方面一切正常,但安装程序无法在客户端系统上运行自定义操作。首先,我认为IIS端存在一些问题,但后来发现安装程序在加载到组合框时抛出错误 以下是我的C代码: public static ActionResult ListCertificate(Session session) { session.Log("ListCertificate: Begin"); try

我有一个C自定义操作,它将可用的服务器证书加载到组合框中。在我这方面一切正常,但安装程序无法在客户端系统上运行自定义操作。首先,我认为IIS端存在一些问题,但后来发现安装程序在加载到组合框时抛出错误

以下是我的C代码:

public static ActionResult ListCertificate(Session session)
        {
            session.Log("ListCertificate: Begin");
            try
            {
                int Index = 1;
                List<string> list = new List<string>();
                X509Store certificateStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
                certificateStore.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);

                foreach (X509Certificate2 certificate in certificateStore.Certificates)
                {
                    String ApplicationCertificate = certificate.FriendlyName;
                    list.Add(ApplicationCertificate);
                }
                certificateStore.Close();

                List<string> DistinctCertificateList = list.Distinct().ToList();

                View view = session.Database.OpenView("DELETE FROM ComboBox WHERE ComboBox.Property='APPLICATION_CERTIFICATE_NAME'");
                view.Execute();

                view = session.Database.OpenView("SELECT * FROM ComboBox");
                view.Execute();

                foreach (string DistinctApplicationCertificate in DistinctCertificateList)
                {
                    if (!string.IsNullOrWhiteSpace(DistinctApplicationCertificate))
                    {
                        Record record = session.Database.CreateRecord(4);
                        record.SetString(1, "APPLICATION_CERTIFICATE_NAME");
                        record.SetInteger(2, Index);
                        record.SetString(3, DistinctApplicationCertificate);
                        record.SetString(4, DistinctApplicationCertificate);

                        view.Modify(ViewModifyMode.InsertTemporary, record);
                    }
                    Index++;
                }
                view.Close();

                session.Log("ListApplicationCertificate: End");
            }
            catch (Exception ex)
            {
                Record record = session.Database.CreateRecord(2);
                record.SetString(1, session["LISTCERTIFICATE_ERROR"]);
                record.SetString(2, ex.Message);
                session.Message(InstallMessage.FatalExit, record);
                session["ERRORMSG"] = ex.Message;
                session["ERRORSHOW"] = session["LISTCERTIFICATE_ERROR"];
                session.Log("ListApplicationCertificate: exception: {0}", ex.Message);
                return ActionResult.Failure;
            }

            return ActionResult.Success;
        }
我的wix UI代码是:

<Control Id="ApplicationCertificateLabel" Type="Text" X="20" Y="190" Width="130" Height="15" TabSkip="no" Text="!(loc.ApplicationCertificateLabel)" />

        <Control Id="ApplicationCertificateComboBox" Type="ComboBox" X="130" Y="185" Width="200" Height="18" Property="APPLICATION_CERTIFICATE_NAME" ComboList="yes">
          <ComboBox Property="APPLICATION_CERTIFICATE_NAME">
            <ListItem Text="[APPLICATION_CERTIFICATE_NAME]" Value="[APPLICATION_CERTIFICATE_NAME]" />
          </ComboBox>
        </Control>
我在详细日志中遇到以下错误: '函数在执行过程中失败。数据库:。列2'中的更新数据类型无效

我已经搔头好几天了。请帮我整理一下


提前感谢。

您能否澄清在客户端系统上运行自定义操作的含义。客户机系统是指我客户运行IIS的服务器,还是指运行客户机应用程序的PC?您应该捕获Exception.StackTrace以隔离导致错误的代码行。catch的编码方式意味着它几乎可以出现在任何地方,尝试找出导致错误的确切代码行!正如@PhilDW建议在view.ModifyViewModifyMode.InsertTemporary捕获异常一样,记录和As错误消息显示,我认为索引端存在一些问题。此外,第2列仅为索引。索引数据类型是这里的麻烦制造者吗。。?