問題タブ [pascalscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - インターフェイス化されたオブジェクトを Pascal Script 関数呼び出しに渡す方法は?
Delphi の部分:
イベントを持つクラスがあり、そのイベントから、インターフェイスされたオブジェクトを渡すプロシージャを呼び出す必要があります。Delphi では問題なく動作しますが、Pascal Script での宣言には問題があります。
背景に -IGPGraphics
インターフェイスは の一部であり、Delphi GDI+ library
メソッドなしでは次のように定義されます。
以下は、Pascal Script で行う必要があることを単純化した Delphi 疑似コードです。
Pascal スクリプトのコンパイル部分:
私の目的は、イベントを持つクラスを Pascal Script で使用できるようにすることであり、そのインターフェイス オブジェクトを上記のようにそのプロシージャに渡す必要があるため、最初にコンパイル時にこれを宣言しようとしました (ただし、これが正しい方法です):
Pascal Script ランタイム部分:
私が間違いなく迷っているのは、ランタイム部分です。インターフェイス化されたオブジェクトをコール スタックから取得して、RenderObject プロシージャに渡す方法がわかりません。
質問は次のとおりです。
この場合のコンパイルとランタイム部分を正しく定義する方法を誰かに提案してもらえますか?
PSそのInno-Setupタグで申し訳ありませんが、おそらくそこの誰かがInnoSetupをこのようにカスタマイズしようとしました.
どうもありがとう!
constants - 文字列変数で Pascal Inno Setup ExpandConstant を使用するには?
インストール プログラムの場合、フォルダー リンクを作成する必要があります。
このために、「[Dirs]」セクションを使用してターゲット フォルダーを作成します。問題ない。
次に、'[Code]' セクションで、関数 'CurStepChanged(ssPostInstall)' を使用して、一時的にインストールされたファイルを読み取り、作成するフォルダー リンクのリストを取得します。ファイルの各行には、ターゲット フォルダーのパス名とリンク パス名が含まれています... Inno Setup 定数を使用します。各値が読み取られ、「文字列」変数として格納されます。
これらの文字列変数を 'ExpandConstant(lLinkTarg)' に渡すと、定数名のいずれかで内部実行時エラーが発生します。
文字列の内容をコピーして「ExpandConstant('{#gRepNasSvg}\UT{code:getProjetc}\Docs')」呼び出しに貼り付けると、機能します...
私が間違っていることについてのヒントはありますか?
前もって感謝します。L.
私が忘れてしまったいくつかのもの。
リンク記述変数の形式は「{#gRepNasSvg}\UT{code:getProjetc}\Docs」です...
inno-setup - Innoscript - 現在のユーザー プロファイル情報を取得する
innoscript を使用してアプリケーションを作成しようとしています。HKLM でレジストリ情報の値を作成/編集する必要があります。したがって、アプリケーションをインストールするには管理者権限が必要です。
ただし、管理者以外のユーザーがアプリケーションをインストールしようとすると、innoscript は管理者ユーザーのパスワードを要求します。管理者ユーザーのパスワードを入力すると、インストール スクリプト (HKCU など) でレジストリを照会するたびに、管理者ユーザーから情報が取得されます。しかし、現在ログインしているユーザーから情報を取得したいと思います。その結果、現在のログオン ユーザー アカウントではなく、管理者ユーザーの場所にプログラムがインストールされます。
アプリケーションが [管理者として実行] または [管理者としてプロンプト表示] で起動されたときに、innoscript から現在のログオン ユーザー ユーザーとユーザー アプリ データの場所を取得する方法はありますか。
あなたの更新を待っています。
ありがとう、
dll - Inno Setup でインストール時とアンインストール時に依存関係のある DLL を使用する方法は?
アプリをアンインストールしたときに、.iss に 2 つの dll をインポートしたいと考えています。これを行う方法が見つかりません。
輸入adcore.dll
手続きUninstalled
もお願いします。そして、以下に示すように失敗しました。
それは動作しません。
Installed()
とUninstalled()
にStatisticInstallInfo.dll
依存しadcore.dll
ます。
decimal - Inno Setup で単一型変数の小数点以下の桁数を定義するにはどうすればよいですか?
セットアップ内のすべてのコンポーネントの合計サイズを計算する必要があります。一部のカスタム コードが原因で、Inno Setup の内部機能を使用できません。
問題は、コンポーネントが多くのファイルを共有することでした。そのため、使用するファイルの変数を含むすべてのコンポーネントの文字列を定義しました。次に、これらの文字列を単一の文字列に追加し、この文字列に特定の変数が見つかった場合、ファイルのサイズ (バイト単位) が type の変数「サイズ」に追加されますSingle
。最後に、「サイズ」は、インストールに必要なスペースを示します。
実際、これはうまく機能しますが、次のページでサイズを GB で示したいと思います。しかし、関数FloatToStr
は小数点の後に多くの数字を追加しますが、私は2つだけにしたいのです。
スクリプトは次のとおりです (問題は最後の行で発生します)。
ご覧のとおり、数字を取り除くためにいくつかのことを試しました。問題は のFloatToStr
関数で、MsgBox
すべての数値が自動的に追加されます。Integer
「サイズ」のタイプを選択しても、長い数値が表示されますが、ここで処理される数値が大きすぎて、ポイントの後に小数点以下 2 桁が必要なため、Integer
andIntToStr
を使用できません (問題を解決するもの)。MsgBox
Format
関数も入れようとしましたMsgBox
が、「タイプの不一致」エラーも発生しました。
FloatToStrF
Inno Setup ではサポートされていません。
コンパイラは、「サイズ」が宣言された型をチェックし、再び使用することを主張するため、事前に使用して「サイズ」を変換FloatToStr
して切り捨ててもうまくいきませんでした。FloatToStr
MsgBox
この数を切り上げる方法がわかりません。たぶん、いくつかの異なるアプローチが役立つでしょうか?
あなたの答えを楽しみにしています!
inno-setup - Inno Setupでのインストール中にオプションファイルのチェックボックスを追加するにはどうすればよいですか?
カスタムページでカスタムチェックボックスを作成しようとしています(1ページのインストーラーであるため)。必要なのはダイアログなどのないチェックボックスだけです。コンパイルしようとしているインストーラーは非常に直線的でシンプルです。
この方法でチェックボックスをバインドしたいFILE3.EXE
:チェックボックスがオンになっている場合はファイル(FILE3.EXE
)をコピーし、チェックボックスがオフになっている場合はインストール中にDestDir
ファイル()をスキップします。FILE3.EXE
これは私が使用したコードですが、それができないため、明らかにチェックボックスコードがありません
inno-setup - Innosetup - 標準ユーザーの管理者ユーザーと dll 登録を識別する
innosetup アプリケーションのインストール中に、dll (Windows の右クリック コンテキスト メニューとアイコン オーバーレイに使用され、dropbox/tortoise cvs に似たもの) を登録し、他の作業も実行しています。これまで、管理者ユーザーのみにアプリケーションをインストールしています。dll は HKCR、HKLM に情報を書き込みます。現在、他の管理者以外のユーザー (標準ユーザー) のインストールもサポートする予定です。
私は以下のようないくつかのことを試しました、
- 必要な権限を管理者からなしに変更しました。
- すべてのレジストリ更新を HKLM から HKCU に変更しました。
しかし、アプリケーションをインストールしようとすると、HKCR に書き込むことができず、dll の登録に失敗しました。というわけで、adminユーザーだけのdllを登録する予定でした。その他の通常のユーザーについては、dll の登録をスキップして、他のことを行う予定です。しかし、現在のユーザーを特定する方法が管理ユーザーであることを確認できません。どなたか、次のことを教えていただけないでしょうか。
- 現在のログイン ユーザーが管理者/パワー ユーザーであるかどうかを特定できますか?
- 管理者権限なしで dll (HKCR の書き込み) を登録できますか?
お返事をありがとうございます。
drag-and-drop - タイトルバーが無効になっている場合、Inno Setup WizardForm を移動可能にする
BorderStyle
カスタムの外観のインストーラーを作成し、 を に設定してタイトルバーを無効にしたいと考えていますbsNone
。
これで、ウィンドウを移動できなくなりました。私は周りを見回して、Delphi の解決策を見つけました:
http://www.chami.com/tips/delphi/010397D.html
これは Inno Setup で実現できますか?
私はすでにWM_NCHITTEST
MSDNで調べましたが、これを機能させることができるかどうか、またその方法を理解できません。
編集:高度なコンパイラー高度なコンパイラーを使用して周りを見回してコンパイルした後、私はこれを思いつきましたが、機能しません。コンパイルはできますが、ウィンドウ内をクリックするとドラッグできません。
inno-setup - カスタムページ処理後にCheck述部が呼び出されるように強制する方法
コンポーネントセクションのパラメータを使用してCheck
、特定のラジオボタンがユーザーによってチェックされたかどうかを確認しています。
カスタムページがユーザーに表示される前に述語が呼び出され、常にデフォルト値が返されます。
カスタムページからユーザー入力を取得して、最終的なコンポーネントの選択に影響を与えるにはどうすればよいですか?
inno-setup - Inno Setup:64ビットOSでsystem32ファイルの名前を変更する方法
System32およびsyswow64フォルダーは、64ビットOSのC:\Windowsの下にあります。
フォルダーxyz.sys
の下にというファイルがあります。以下のコードを使用System32\drivers
して名前を変更しようとしました:xyz.sys
xyz1.sys
しかし、64ビットOSでは、innosetupが{sys}='Driveletter:\Windows\syswow64'
デフォルトのものとして採用されています。
私も以下のコードを試して、xyz.sys
ファイルの名前を変更しましたSystem32\drivers
:
しかし、上記のコードも機能しません。64ビットOSでsystem32ファイルの名前を変更する方法を誰かに提案してもらえますか。
windows2008R2を使用しています。