2017-02-06 2 views
1

Ich versuche, meine WiX-Bootstrap-Installer in Visual Studio signiert zu bekommen. Ich Beispiel in WiX: Digitally Sign BootStrapper project gezeigt folgendenSo erhalten Sie den richtigen FrameworkSDKPath in Visual Studio

Leider expliziten Pfad verwenden musste Werkzeug zu unterzeichnen, um es Arbeit zu bekommen ...

<Target Name="UsesFrameworkSdk"> 
    <GetFrameworkSdkPath> 
     <Output TaskParameter="Path" PropertyName="FrameworkSdkPath" /> 
    </GetFrameworkSdkPath> 
    <Message Text="SDK path = '$(FrameworkSdkPath)'" Importance="high"/> 
    </Target> 
    <Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk"> 
    <PropertyGroup> 
     <SignToolPath>C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe</SignToolPath> 
    </PropertyGroup> 
    </Target> 

Die FrameworkSdkPath Variable gibt „C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ "wo ist das Zeichen-Tool nicht.

Wenn ich ein VS-Befehlswerkzeug starte, wird die Umgebungsvariable WindowsSdkDir auf das Verzeichnis gesetzt, das signtool.exe enthält. Diese Variable ist jedoch nicht in Visual Studio festgelegt.

Wie mache ich das richtig, also muss ich keinen expliziten Pfad angeben?

Antwort

1

Wie mache ich das richtig, also muss ich keinen expliziten Pfad angeben?

Aus dem Beispiel könnten wir den Pfad von der Registrierung abrufen. dies wie:

<Target Name="UsesFrameworkSdk"> 
    <GetFrameworkSdkPath> 
     <Output TaskParameter="Path" PropertyName="FrameworkSdkPath" /> 
    </GetFrameworkSdkPath> 
    <PropertyGroup> 
     <Win10SDK>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\[email protected])</Win10SDK> 
    </PropertyGroup> 
    <Message Text="SDK path = '$(Win10SDK)'" Importance="high"/> 
    </Target> 

    <Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk"> 
    <PropertyGroup> 
     <SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDK)\bin\x86\signtool.exe')">$(Win10SDK)\bin\x86\signtool.exe</SignToolPath> 
    </PropertyGroup> 
    </Target> 

enter image description here

0

Die akzeptierte Antwort ist nicht mehr gültig für die neuesten Versionen des SDK, da der Korb-Ordner verschoben wird. Hier ist die Korrektur:

<Target Name="UsesFrameworkSdk"> 
    <PropertyGroup> 

<Win10SDKBinPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\[email protected])bin\</Win10SDKBinPath> 

<Win10SDKVersion>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\[email protected]).0\</Win10SDKVersion> 
     <Win10SDKVerBinPath>$(Win10SDKBinPath)$(Win10SDKVersion) 
    </Win10SDKVerBinPath> 
    </PropertyGroup> 
</Target> 
<Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk"> 
    <PropertyGroup> 
    <SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDKVerBinPath)x86\signtool.exe')">$(Win10SDKVerBinPath)x86\signtool.exe</SignToolPath> 
    </PropertyGroup> 
</Target> 
Verwandte Themen