2017-06-22 19 views
7

Tôi đã cố gắng bọc ứng dụng WPF bên trong một ứng dụng Windows Universal, sử dụng Desktop Bridge.Lỗi bí ẩn khi chạy lệnh makepri cho Desktop Bridge của Windows Universal App

Để biểu tượng thanh tác vụ của ứng dụng bị mất hiệu lực, với nền trong suốt, tôi làm theo hướng dẫn có thể tìm thấy trong các blog và bài viết/diễn đàn MSDN khác nhau, chẳng hạn như this one.

Các lệnh đầu tiên tôi đã thực hiện được hai:

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\makepri.exe" createconfig /o /cf priconfig.xml /dq en-US 
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\makepri.exe" new /o /pr . /cf priconfig.xml 

Những lệnh này được thực hiện trong thư mục đầu ra ứng dụng của WPF, nơi tôi cũng đặt một tập tin AppxManifest.xml, cùng với các tập tin và thư mục được tham chiếu bởi nó (chẳng hạn như tệp Thực thi và hình ảnh Tài sản ở các tỷ lệ và độ phân giải khác nhau).

Từ thời điểm này, tôi có hai lỗi lạ khác nhau:

Đầu tiên, Nếu file AppManifest.xml chứa các phần sau:

<Extensions> 
<desktop2:Extension Category="windows.firewallRules"> 
<desktop2:FirewallRules Executable="app\MyWpfApp.exe"> 
<desktop2:Rule Direction="in" IPProtocol="TCP" Profile="all" /> 
<desktop2:Rule Direction="in" IPProtocol="UDP" Profile="all" /> 
</desktop2:FirewallRules> 
</desktop2:Extension> 
</Extensions> 

sau đó lệnh makepri thứ hai sẽ cho kết quả trong thông báo lỗi sau:

onecoreuap \ base \ mrt \ tools \ indexertool \ src \ tool \ parame termanager.cpp (: 908): Lỗi PRI175: 0x80080204 -

onecoreuap \ base \ mrt \ tools \ indexertool \ src \ công cụ \ parametermanager.cpp (: 318): Lỗi PRI175: 0x80080204 -

Microsoft (R) Công cụ MakePRI

Bản quyền (C) 2013 Microsoft. Đã đăng ký Bản quyền.

lỗi PRI191: 0x80080204 - Không tìm thấy tệp kê khai Appx hoặc không hợp lệ. Vui lòng đảm bảo có tệp kê khai đúng ngữ pháp. Hoặc chỉ định tên chỉ mục có/trong chuyển đổi.

Sau đó, nếu tôi xóa phần FirewallRules đó, mọi thứ có vẻ chạy tốt - ít nhất là trên máy của tôi.

Second, Nó không phải lúc nào cũng chạy như mong đợi:

khi tôi cố gắng để chạy một cách chính xác các tập tin tương tự (với phiên bản cố định của AppxManifest.xml) và lệnh tương tự trên một máy khác, tôi nhận được cùng một lỗi mà tôi đã sử dụng để có được trong máy đầu tiên (từ trước khi loại bỏ phần FirewallRules).

Bất kỳ ý tưởng nào có thể gây ra những sự cố này? Những gì có thể khác biệt giữa các máy xây dựng có thể gây ra vấn đề thứ hai? Tôi nên tìm gì?

+0

Tôi có một vấn đề tương tự nhưng ứng dụng UWP:. Código \t giá trị mâu thuẫn ** cho tài nguyên 'ExceptionStringTable/NameScopeNameNotFound' \t MyNameSpace \t MyProyectPath \ MakePRI ** –

+0

@JuanPabloGomez như thế nào bạn AppxManifest.xml tập tin trông như thế nào? bạn đã thử xóa một số phần để xem phần nào có thể gây ra sự cố này không? –

Trả lời

3

Vấn đề đầu tiên đã được giải quyết bằng cách loại bỏ các IgnorableNamespaces tài sản từ Gói xml phần tử (ở cấp độ gốc của AppxManifest.xml).

-

Đối với vấn đề thứ hai, sau khi liên hệ với nhóm hỗ trợ của Microsoft về vấn đề này, điều này có vẻ là một lỗi trong công cụ makepri chạy trên các hệ thống cũ:

Rõ ràng, khi chạy trên Windows Server 2012 R2 (và phiên bản có lẽ khác nữa), lệnh công cụ makepri phải được cung cấp với một tham số "bắt buộc" mà khẳng định tên của ứng dụng:

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\makepri" new /o /pr . /cf priconfig.xml /mn AppxManifest.xml /of resources.pri /in "MyAppName" 

phần quan trọng là /trong "MyAppNam e "đối số ở cuối dòng, mặc dù các đối số khác cũng có thể rất quan trọng. Ngoài ra, "MyAppName" phải được giống như định nghĩa trong tập tinAppxManifest.xml, một phần rằng:

<Applications> 
    <Application Id="MyAppName" ...> 
... 

Một bước mà có thể đã được liên quan để giải quyết vấn đề này, là để đảm bảo tệp tệp ánh xạ, được sử dụng sau này cho lệnh makeappx, có định nghĩa đúng cho ResourceId - như được giải thích trong this article.

Các vấn đề liên quan