Process.Start (), чтобы открыть .exe в CE5, используя .netcf-3.5. Win32Exception - PullRequest
3 голосов
/ 05 сентября 2011

Надеясь, что на этот вопрос ответят.По сути, я пытаюсь открыть исполняемый файл из созданного мною приложения, которое работает на windows ce5 на unitech сканере штрих-кода с использованием .net compact framework 3.5.Я включил фрагмент кода, где я пытаюсь это сделать.

Каждый раз, когда я отлаживаю приложение через VS2008, я получаю Win32Exception, но без дополнительной информации (с оператором try catch или без него).Это не говорит мне, что является исключением, и не предоставляет код ошибки.

Вот код, который я использую для запуска процесса.Можете ли вы увидеть что-то не так с этим, что может вызвать ошибку?Я дважды и трижды проверил имя файла, а также каталог, где оно хранится, так что это не так.

private void CustomButtonEvent(object sender, EventArgs e)
{
    string buttonName = ((Control)sender).Name;
    ProcessStartInfo processStartInfo = new ProcessStartInfo();

    buttonName = buttonName.Remove(0, 3);
    buttonName = buttonName.Replace(' ', '_');

    switch (buttonName)
    {//todo need to open the different exe's here
        case "End_Of_Line":
            {
                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
        case "Asset_Tracking":
            {
                processStartInfo.FileName = "AssetTrackingScanner.exe";
                processStartInfo.WorkingDirectory = @"\Flash Storage\CompoundingManagementScannerSuite\Applications\AssetTrackingScanner\AssetTrackingScanner\bin\Debug";

                try
                {
                    Process.Start(processStartInfo);
                }
                catch (Exception f)
                {
                    MessageBox.Show(f.ToString());
                }

                break;
            }
        case "Stock Take":
            {

                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
        case "Despatch":
            {
                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
    }
}

1 Ответ

6 голосов
/ 05 сентября 2011

Я вижу две проблемы. Во-первых, CE требует полностью определенных путей, поэтому processStartInfo.FileName должно быть примерно таким:

processStartInfo.FileName = 
@"\Flash Storage\CompoundingManagementScannerSuite\Applications\AssetTrackingScanner\AssetTrackingScanner\AssetTrackingScanner.exe"; 

Во-вторых, CE не имеет понятия WorkingDirectory, поэтому удалите вызов, чтобы установить его.

Я также немного обеспокоен частью \bin\debug\ вашего пути. Studio не развертывается в папку bin\debug\ на устройстве. Он компилируется в один на ПК, но на целевом устройстве он будет единственным способом, если вы установите его вручную. Это заставляет меня думать, что вам нужно проверить путь к приложению на устройстве.

...