2013-02-06 36 views
5

Có cách nào để cài đặt ứng dụng ClickOnce mà không cần nhắc người dùng không? Tôi đang nói về "Chạy/Không Chạy" mà người dùng nhận được lần đầu tiên họ chạy ứng dụng.Làm thế nào để cài đặt ứng dụng ClickOnce mà không cần nhắc người dùng?

Dường như có một số manh mối here nhưng tôi tin rằng đó là bỏ qua "Độ cao" (UAC) và lời nhắc bảo mật, chứ không phải màn hình "Chạy/Không Chạy" ban đầu.

Tôi chỉ có thể tìm thông tin về cách âm thầm cập nhật ứng dụng đã được cài đặt trong quá khứ, nhưng không có gì về cài đặt ứng dụng âm thầm lần đầu tiên.

Tôi cũng thấy this post mà dường như có liên quan, nhưng một lần nữa, không chắc chắn nếu chúng ta đang nói về dấu nhắc cùng một người dùng ...

Trả lời

2

Không có cách nào để cài đặt một ứng dụng ClickOnce mà không nhắc người sử dụng. nếu bạn muốn người dùng có thể nhấp đúp vào nó và nó chỉ cài đặt mà không cần xác minh với người dùng, không sử dụng ClickOnce. Thành thật mà nói, theo kinh nghiệm của tôi, chỉ có phần mềm độc hại và các gói được đẩy bằng SMS trong môi trường doanh nghiệp mà không cần nhắc nhở người dùng.

+0

Cảm ơn Robin, đó cũng là những gì các nghiên cứu của tôi đã cho tôi thấy. Đây thực sự là một gói được triển khai trong môi trường doanh nghiệp của tôi. Đó là điều tôi muốn nhân viên của mình chạy mọi lúc, vì vậy cài đặt im lặng được ưu tiên. – Joe

+0

Cài đặt im lặng cũng hữu ích cho quản trị viên mạng viết kịch bản để triển khai cho người dùng. – Mike

+0

Nó không có vẻ công bằng với -1 câu trả lời của tôi khi nó chính xác, chỉ vì bạn không thích câu trả lời. – RobinDotNet

4

Cách tạo trình cài đặt ClickOnce tùy chỉnh? http://msdn.microsoft.com/en-us/library/dd997001.aspx

liên kết Cập nhật (06 Oct 2016)

Walkthrough: Creating a Custom Installer for a ClickOnce Application

+0

Giải pháp được tham chiếu hoạt động rất tốt. Chỉ trong trường hợp liên kết biến mất, nó sử dụng lớp InPlaceHostingManager để tải xuống tệp kê khai, xác nhận các yêu cầu ứng dụng rồi tải xuống (cài đặt) ứng dụng. –

6

Có thể tránh được những "Run"/"Không chạy" nhanh chóng, mặc dù bạn vẫn có vấn đề thực sự sao chép các tập tin trên cho người dùng, thường yêu cầu họ khởi chạy ứng dụng thông qua liên kết. Tuy nhiên, bạn có thể khởi chạy nó thông qua một kịch bản đăng nhập hoặc một cái gì đó dọc theo những dòng đó. Có lẽ bạn đã giải quyết vấn đề đó bằng cách nào đó vì nó được ngụ ý trong câu hỏi của bạn mà bạn có. Câu hỏi khác mà bạn liên kết với những người di chuyển xung quanh điều này nhưng nó không thực sự giúp bạn có được tất cả các cách.

Tôi biết bạn có thể bỏ qua lời nhắc "Chạy"/"Không chạy" vì tôi đã thực hiện thành công bằng ClickOnce mà chúng tôi triển khai dưới dạng vỏ tùy chỉnh trên máy kiosk. Điều quan trọng là ClickOnce phải được ký bởi một nhà xuất bản đáng tin cậy. Ngay cả tự ký cũng không sao nếu bạn có đúng thứ được cấu hình trên máy khách.

Vì vậy, hãy yêu cầu quản trị mạng đẩy ra chính sách nhóm tin cậy chứng chỉ ký mã đang được sử dụng để ký đơn đăng ký của bạn. Có thông tin về cách thực hiện điều đó tại TechNet tại đây: http://technet.microsoft.com/en-us/library/cc770315(v=WS.10).aspx, được sao chép tại đây một thời gian ngắn:

  1. Bàn điều khiển quản lý chính sách nhóm mở.

  2. Tìm hiện có hoặc tạo GPO mới để chứa cài đặt chứng chỉ. Đảm bảo rằng GPO được liên kết với tên miền, trang web hoặc đơn vị tổ chức có người dùng bạn muốn bị ảnh hưởng bởi chính sách.

  3. Nhấp chuột phải vào GPO, sau đó chọn Chỉnh sửa. Trình quản lý chính sách nhóm mở ra và hiển thị nội dung hiện tại của đối tượng chính sách.

  4. Trong ngăn dẫn hướng, mở Cấu hình máy tính \ Cài đặt Windows \ Cài đặt bảo mật \ Chính sách khóa công khai \ Nhà xuất bản đáng tin cậy.

  5. Nhấp vào menu Hành động, sau đó nhấp vào Nhập.

  6. Làm theo hướng dẫn trong Trình hướng dẫn nhập chứng chỉ để tìm và nhập chứng chỉ.

  7. Nếu chứng chỉ tự ký và không thể truy ngược lại chứng chỉ nằm trong kho chứng chỉ Trusted Root Certification Authorities thì bạn cũng phải sao chép chứng chỉ vào cửa hàng đó. Trong ngăn dẫn hướng, bấm Tổ chức phát hành chứng chỉ gốc đáng tin cậy, rồi lặp lại các bước 5 và 6 để cài đặt bản sao chứng chỉ vào cửa hàng đó.

1

Ngoài các câu trả lời của MikeBazs, tôi muốn cung cấp "Workaround" sau khi cài đặt Click-Once-Application "không tương tác" và "gần như im lặng" (Người dùng nhìn thấy tiến trình -window trong khi cài đặt, không cần click và/hoặc có thể)

có một vài "vấn đề" để xem xét, nhưng nếu bạn làm theo hướng dẫn này, kết quả sẽ là những gì bạn cần:

1.) Đăng ký ứng dụng của bạn: Trong phòng thu trực quan, bạn có thể dễ dàng đăng ký ứng dụng của mình bằng chứng chỉ của riêng bạn, điều đó không lớn thỏa thuận.

2.) Distribute giấy chứng nhận: Để tránh hộp thoại, nếu ứng dụng cần phải được cài đặt, bạn cần phải phân phối chứng chỉ của bạn đến các cửa hàng sau đây trên bất kỳ máy (Sử dụng GPO cho rằng): Trusted PublishersTrusted Root Certification Authorities

Giờ đây, người dùng có thể cài đặt ứng dụng chỉ bằng một cú nhấp chuột - không có câu hỏi bảo mật. Nhưng chúng tôi muốn Zero, nhấp chuột:

3.) Tạo một kịch bản PowerShell, nằm trên một máy chủ, mà gọi setup.exe của ứng dụng của bạn:

if (-not (Test-Path env:APPInstalled)){ 
    Start-Process "\\server\share\Application\setup.exe" 

    # Set Flag for "Installed" 
    [Environment]::SetEnvironmentVariable("APPInstalled", "1", "User") 
} 

tôi đã sử dụng một biến với người sử dụng môi trường được gọi là APPInstalled để xác định xem ứng dụng có cần cài đặt hay không.

Giờ đây, người dùng có thể thực thi tập lệnh đó, chỉ nhận được cài đặt một lần mà không cần xác nhận thêm. Nhưng ứng dụng sẽ bắt đầu sau khi cài đặt.

4.) Sửa mã nguồn của ứng dụng của bạn: Tôi đã sử dụng tệp giả để phát hiện đường đi của ứng dụng. Nếu nó là firstrun, (tức là ngay sau khi cài đặt) Tôi chỉ đóng cửa một lần nữa:

private void Form1_Load(object sender, EventArgs e) 
    { 
     //first run? That's a initial deployment, close application. 
     if (!File.Exists("C:\\some\\static\\path\\notfirstrun.dat")) 
     { 
      File.WriteAllText("C:\\some\\static\\path\\notfirstrun.dat", "1"); 
      Application.Exit(); 
     } 

Bây giờ, người dùng có thể thực hiện thaht kịch bản, chỉ nhận được một cài đặt một lần không có thêm xác nhận yêu cầu và các ứng dụng không "Tự động bắt đầu" sau khi thiết lập.

Nhưng chúng tôi muốn tránh "click" cũng như:

Nếu chúng ta thiết lập các kịch bản PowerShell trong Startup-Folder - nó bật lên, đó là xấu xí. Nếu chúng ta đặt nó là Login-Script, nó không chạy trong ngữ cảnh người dùng, được yêu cầu cho Click-Once.

Như một giải pháp cho vấn đề "này", bạn có thể quấn nó bên trong tập lệnh vbs, gọi tập lệnh PowerShell.Lưu ý, rằng đây được thực hiện trong bối cảnh người sử dụng, vì vậy người sử dụng cần quyền để thực hiện powershell-scripts:

Dim objShell 
Set objShell=CreateObject("WScript.Shell") 

strCMD="powershell.exe -sta -noProfile -NonInteractive -nologo -ExecutionPolicy Bypass -f \\server\share\scripts\install_App.ps1" 
objShell.Run strCMD,0,True 

Cuối cùng, sử dụng một GPO để tạo ra một "công tác" trong "Task-Scheduler" mà chạy vbs -script 30 giây sau khi đăng nhập, chỉ khi người dùng đăng nhập.

Tất cả người dùng sẽ thấy là tiến trình "cài đặt".

Tóm lại:

  • Đăng mã của bạn
  • Distribute chứng chỉ của bạn
  • kích hoạt quá trình cài đặt với một kịch bản PowerShell
  • bọc rằng PowerShell kịch bản bên trong một kịch bản vbs inivisible
  • triển khai vbs script cho mỗi máy, sử dụng task-scheduler để đảm bảo nó chạy trong ngữ cảnh của người dùng.
Các vấn đề liên quan