2009-10-08 8 views
6

Pracuję nad projektem instalacji w Visual Studio i chciałbym, aby użytkownik mógł określić, czy utworzyć skrót do pulpitu i/lub skrót menu Start do programu za pomocą pól wyboru.Visual Studio: warunkowo tworzyć skróty w projekcie instalacji?

Jestem w stanie zlecić instalatorowi utworzenie skrótów roboczych w odpowiednich lokalizacjach, a także dodałem do instalatora okno dialogowe z polami wyboru; nie jestem jednak w stanie stworzyć (lub ich brak) skrótów związanych ze statusem tych pól wyboru.

Zakładam, że muszę ustawić właściwości "warunku", ale nie jestem pewien konkretnej składni. Czy to możliwe, a jeśli tak, to w jaki sposób chciałbym to osiągnąć?

Odpowiedz

3

To nie jest możliwe.

Zajrzyj tutaj pod numer Microsoft Forum, aby uzyskać odpowiedź firmy Microsoft w kwietniu tego roku, obejmującą ten sam problem, co Twój.

+0

Hmm, to najbardziej niefortunne; ale to dość ostateczna odpowiedź. Dzięki. – Donut

6

prowadzi link poz feedback powiedział:

W przypadku, gdy chcesz pole do jedynego kontroli, czy skrót instaluje, a nie jej cel, nie ma obecnie rozwiązanie w projektach ustawień Visual Studio, Najlepiej jest to osiągnąć dzięki dodatkowej wiedzy na temat MSI i skryptowi po instalacji, aby ręcznie modyfikować swój MSI po każdej kompilacji lub poprzez przejście na bardziej zaawansowane (i elastyczne) narzędzie do tworzenia instalacji (na przykład XML Instalatora Windows).

Nie można tego zrobić w wskaż i kliknij interfejs VS, ale to faktycznie nie jest trudne do zrobienia tego, co chcesz w prosty akcji niestandardowej.

alt text

Definiowanie skrypt w języku VBScript lub JavaScript. Możesz ustawić niestandardową akcję do działania na podstawie dowolnego warunku, w tym pola wyboru w oknie dialogowym.

alt text

Wewnątrz skryptu, należy przeprowadzić analizę danych wejściowych i utworzyć skrót. Użyłem konwencji, aby oddzielić args od skryptu za pomocą | znak, więc tak analizuję:

var parameters = Session.Property("CustomActionData").split("|"); 
var targetDir = parameters[0]; 
var checkBoxState = parameters[1]; 
Powiązane problemy