3

NSIS を使用してインストーラーを作成しました。いくつかのファイル (DLL など) を C:/Program Files/App Name/ などの標準的な場所にインストールする必要があります。また、現在のユーザーの Application Data ディレクトリにファイルをインストールする必要があります。問題は、ユーザーが Vista の管理者ではない場合、特権を昇格する必要があり、その際に環境変数が変更されるため、現在のユーザーが管理者ユーザーのように表示され、最終的に管理者ユーザーのディレクトリではなく管理者ユーザーのディレクトリにインストールされることです。実際のユーザー。インストーラーを起動するときに昇格する必要があるため、ユーザー名を取得して昇格することはできません。管理者としてインストーラーを実行しているときに、実際のユーザーが誰であるかを把握する合理的な方法はありますか?

編集:残念ながら、最初の実行時にデータをコピーすることはできません。これは MS Word テンプレートであるため、ユーザーのディレクトリに書き込んでいるものなしではアプリは動作しません。私のものはテンプレートなしでは実行されないため、インストール時にテンプレートを作成する必要があり、Word ではテンプレートがユーザーの AppData ディレクトリにある必要があります。

4

3 に答える 3

3

私のすべてのNSISインストーラーはこのUACプラグインを使用しています:http://nsis.sourceforge.net/UAC_plug-in

インストーラーを起動するとすぐに管理者に昇格できます。これにより、すべての作業を実行するインストーラーの2番目のインスタンスが生成されます。ただし、インストーラーを起動したユーザーとして元のプロセスで実行されるコードセグメントを呼び出すことはできます。

したがって、次のようなインストーラーセクションを作成できます。

Section "Install My Program" SecMain
    ...    
    # Install files to common folders
    ...
    !insertmacro UAC.CallFunctionAsUser CopyUserWordTemplate
    ...
SectionEnd

Function CopyUserWordTemplate
    SetOutPath $LOCALAPPDATA
    File "MyWordTemplate.dot"
FunctionEnd
于 2009-05-07T14:43:06.990 に答える
2

別のユーザーがアプリケーションを実行しようとするとどうなりますか? その後、ファイルは利用できなくなります-これは私が何ヶ月も戦った問題です...

私が見つけた最善の解決策は、 Active Setupと呼ばれるあまり知られていない (そしてまったく文書化されていない) Windows 機能を利用することでした。それがどのように機能するかについての適切な説明については、http://www.etlengineering.com/installer/activesetup.txtを参照してください。

これは、IE がユーザーごとの設定をインストールするために使用するのと同じ機能です。上記のリンクを要約すると、基本的に、ユーザーがログインするたびに Windows がチェックするレジストリ キーを作成します。HKCU キーの値が見つかった値よりも小さい場合HKLM では、定義したスクリプト/プログラムなどを実行します。ユーザーごとのファイルをプログラム ファイル フォルダーにインストールしてから、アクティブ セットアップ機能を使用して、ユーザーが次回ログインするときにそれらをユーザー プロファイルにコピーします。セットアップの完了時にそれらがそこにあることを確認する必要がある場合は、インストールの完了時に再起動をスケジュールします。

PS。NSIS の代わりに MSI を使用している場合、インストーラーの起動時に昇格する必要はなく、Vista は実行シーケンスの開始時に昇格をトリガーする必要があります (インストーラーが適切に設計されている場合 - ほとんどありません) - ただし、NSIS を使用しているため次に、インストーラーの実行時に昇格をトリガーする必要があると思います。

編集:ハハ、私の正確な問題は MS Word テンプレートにもありました! Word テンプレートについて私が見つけた解決策は、インストール ディレクトリを読み取り、そのレジストリ キーに含まれるパスの下のフォルダーにHKLM\SOFTWARE\Microsft\Windows\CurrentVersion\App Paths\Winword.exeインストールすることです。STARTUPユーザーは、マクロがデジタル署名されている場合でも、最初の実行時にマクロの実行を許可するように求められますが、すべてのユーザーが利用できます。後でアクセス許可エラーが発生しないように、テンプレートも読み取り専用に設定してください。

于 2009-01-13T22:33:45.500 に答える
1

Windows 7 ロゴ プログラムのドキュメントを参照してください。それは述べています:

マシンごとのインストールでは、インストール時に日付を格納する正しいユーザーの場所がないため、インストール中ではなく、最初の実行時にユーザー データを書き込む必要があることに注意してください。

お申し込みが 1 人のユーザーのみの場合。次に、ローカル設定フォルダーにインストールする必要があります(vistaとwindows 7では少し異なる名前だと思います)。

于 2009-01-13T21:11:06.197 に答える