C# Установщик приложения - установленное приложение не открывается - PullRequest
0 голосов
/ 02 мая 2020

Я создал Setup.exe моего приложения в Visual Studio 2019, используя C#, на моем компьютере. Я установил приложение на другой ноутбук, скопировав на этот ноутбук папку отладки с установочными файлами. Но после установки, когда я нажал на приложение, оно не открывается. Я также попытался изменить целевую работу приложения в Visual Studio до tnet в соответствии с ноутбуком. Но тот же эффект. Это приложение имеет ссылки на некоторые внешние файлы DLL, такие как DLL спектрометра и DLL Mathematica инструмента. Если все работает нормально, это приложение должно собирать данные со спектрометра, обрабатывать сигналы и отображать результаты при do tnet GUI.

Использованные ссылки и библиотеки

  1. Спектрометр Ocean Optics - common64.dll, NETOmniDriver-NET40.dll

  2. Wolfram Mathemtica связанный инструмент - ml32i4.dll, Wolfram.NETLink.dll

Пожалуйста, помогите мне в открытии моего приложения.

Пожалуйста, найдите код ниже.

    namespace JointApp1
{
    public partial class Form1 : Form
    {
        int numberOfSpectrometersFound;
        int spectrometerIndex; // indicates which spectrometer we are using
        OmniDriver.CCoWrapper wrapper;
        private Wolfram.NETLink.MathKernel mathKernel;


        public Form1(string[] args)

        {
             InitializeComponent(args);
            wrapper = new OmniDriver.CCoWrapper();
            spectrometerIndex = -1; 

        }


        private void button5_Click(object sender, EventArgs e)
        {


            numberOfSpectrometersFound = wrapper.openAllSpectrometers();
            if (numberOfSpectrometersFound < 1)
            {
                listBox1.Items.Add("No spectrometers found");
                spectrometerIndex = -1; // set it to an invalid value
                return;
            }
            spectrometerIndex = 0; // arbitrarily choose the first
            // spectrometer for this demo
            listBox1.Items.Add("Selecting spectrometer: " +
           wrapper.getName(spectrometerIndex));
        }

        private void button2_Click(object sender, EventArgs e)
        {


            StreamReader sr = new StreamReader(@"C:\Program Files\Wolfram Research\Mathematicanew\12.0\SystemFiles\Links\NETLink\Examples\Part1\MathKernelApp\JointApps\rd.csv");
            string line;



            if (sr != null) sr.Close();

            //end of graph

            int numberOfPixels; // number of CCD elements/pixels provided by the spectrometer
            double[] spectrum;

            if (spectrometerIndex == -1)
                return; // no available spectrometer
            numberOfPixels = wrapper.getNumberOfPixels(spectrometerIndex);
            // Set some acquisition parameters and then acquire a spectrum

            spectrum = (double[])wrapper.getSpectrum(spectrometerIndex);
            // Display the raw pixel values of this spectrum

            var csv = new StringBuilder();
           string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Imprint KGT\Documents\Visual Studio 2012\editingg for lamda\WindowsFormsApplication1\wn.txt");

            for (int i = 0; i < numberOfPixels; ++i)
            {
                double[] array = new double[1044];
                var first = spectrum[i].ToString();

                var newLine = string.Format("{0},{1}",lines[i], first);
                csv.AppendLine(newLine);
            }
            File.WriteAllText((@"C:\Program Files\Wolfram Research\Mathematicanew\12.0\SystemFiles\qwer.csv"), csv.ToString());


            for (int index = 0; index < numberOfPixels; ++index)
            {
                listBox2.Items.Add("Raman Shift[" + lines[index] + "] = " +
                  spectrum[index]);

                double qw = spectrum[1];         

            }

        }

        private async void Button4_Click(object sender, System.EventArgs e)
        {

            statusStrip1.Text = "calling mathematica.......detecting pesticide presence.....";

            if (mathKernel.IsComputing) { mathKernel.Abort(); }
            else
            {

                try
                {

                   mathKernel.Compute("linkName = \"Bob\"");
                    mathKernel.Compute("remoteLinkObj = LinkOpen[linkName, LinkMode -> Listen]");

                    mathKernel.Compute("Needs[\"JLink`\"]");
                    mathKernel.Compute("$FrontEndLaunchCommand = \"C:\\Program Files\\Wolfram Research\\Mathematicanew\\12.0\\Mathematica.exe\"");
                    mathKernel.Compute("UseFrontEnd[nb = CreateDocument[Null, Visible -> False]; NotebookWrite[nb, Cell[BoxData[{RowBox[{RowBox[{\"linkName\", \"=\", \"\\\"Bob\\\"\"}], \";\"}], \" \", RowBox[{RowBox[{\"feLinkObject\", \"=\", RowBox[{\"LinkOpen\", \"[\", RowBox[{\"linkName\", \",\", RowBox[{\"LinkMode\", \"\\[Rule]\", \"Connect\"}]}], \"]\"}]}], \";\"}], \" \", RowBox[{RowBox[{\"SetAttributes\", \"[\", RowBox[{\"remoteEval\", \",\", \"HoldRest\"}], \"]\"}], \";\"}], \" \", RowBox[{RowBox[{RowBox[{\"remoteEval\", \"[\", RowBox[{\"link_LinkObject\", \",\", \"expr_\"}], \"]\"}], \":=\", RowBox[{\"(\", RowBox[{RowBox[{\"LinkWrite\", \"[\", RowBox[{\"link\", \",\", RowBox[{\"Unevaluated\", \"[\", \"expr\", \"]\"}]}], \"]\"}], \";\", RowBox[{\"LinkRead\", \"[\", \"link\", \"]\"}]}], \")\"}]}], \";\"}]}], \"Input\"]]; SelectionMove[nb, Previous, Cell]; SelectionEvaluate[nb];  NotebookClose[nb]]");

                    mathKernel.Compute("NotebookEvaluate[\"greenchillicode.nb\"]");
                    string a = mathKernel.Result.ToString();
                    //la

                    textBox1.Text = a;

                    mathKernel.Compute("evalLoop[link_LinkObject] := Module[{resultOfEval, exprIn, exprOut, evalMessages}, evalMessages = {}; collectMessages[m_] := AppendTo[evalMessages, m]; Internal`AddHandler[\"Message\", collectMessages]; While[True, evalMessages = {}; exprIn = LinkRead[link, Hold]; resultOfEval = Check[exprOut = ReleaseHold[exprIn], $Failed]; Which[resultOfEval === $Failed, LinkWrite[link, EvalError[\"In\" -> exprIn, \"Out\" -> exprOut, \"Messages\" -> evalMessages]], True, LinkWrite[link, exprOut]]]; Internal`RemoveHandler[\"Message\", collectMessages]; LinkWrite[link, \"Evaluation loop is off\"]]");

                }
                catch (Exception ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }

            }
        }
        private void Show(System.Drawing.Image image)
        {
            throw new System.NotImplementedException();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(1378, 744);
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "23april";
            this.ResumeLayout(false);

        }
    }
}
...